資源簡介
C語言編寫的無優先級運算問題,C語言編寫的無優先級運算問題,C語言編寫的無優先級運算問題
代碼片段和文件信息
#include?
const?int?MAX?=?50;
int?num[5];??//輸入的數
int?flag[10];??//是否已經用過
int?oper[5];??//1--‘+‘?2--‘-‘?3--‘*‘?4--‘/‘
int?n?m;?
int?p[10];??//臨時數組
int?bestp[10];??//最優數組
int?bestop[10];?//最優操作符
char?op[]?=?{‘?‘?‘+‘?‘-‘?‘*‘?‘/‘};
int?k;??//搜索深度逐漸加深
bool?found()
{
????int?result?=?p[1];
????for(int?i=1;?i<=k;?i++)??//計算式子的結果
????{
????????switch(oper[i])
????????{
????????case?1:
????????????result?+=?p[i+1];
????????????break;
????????case?2:
????????????result?-=?p[i+1];
????????????break;
????????case?3:
????????????result?*=?p[i+1];
????????????break;
????????case?4:
????????????result?/=?p[i+1];
????????????break;
????????}
????}
????return?result?==?m;
}
bool?backtrack(int?dep)
{
????if(dep?>?k+1)??//深度逐漸加深
????{
????????if(found())
????????{
????????????//copy(p?p+n+1?bestp);
???????????//?copy(oper?oper+n+1?bestop);
????????????return?true;
????????}
????????else
????????????return?false;
????}
????for(int?j=1;?j<=n;?j++)?//可選的數字
????{
????????if(flag[j]?>?0)
????????????continue;
????????p[dep]?=?num[j];
????????flag[j]?=?1;
????????for(int?i=1;?i<=4;?i++)?//可選的操作符
????????{
????????????oper[dep]?=?i;
????????????if(backtrack(dep+1))
????????????????return?true;
????????????oper[dep]?=?0;
????????}
????????flag[j]?=?0;
????????p[dep]?=?0;
????}???
????return?false;
- 上一篇:C語言的機房管理系統
- 下一篇:公交線路最短路徑查詢
評論
共有 條評論