正文

另类的穷举算法2006-07-30 03:09:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/petibo/17010.html

分享到:

Description有一个未完成的等式1 2 3 4 5 6 7 8 9=N空格内(1前面没有空格)可以填入+,-,也可以不填。 编程找出输入某个整数 N 后使等式成立的所有方案的总数。保证有解。Input该题含有多组测试数据,每组数据为一行,仅一个整数N。Output输出方案总数。Sample Input108Sample Output15 #include<iostream.h>#define OpNo 0 //No operator#define OpAdd 1 //+#define OpSub 2 //-typedef int Operator;long Calc(int Status);int main(){    long t,count,loop;    while(cin>>t)    {        for(loop=0,count=0;loop<6561;loop++)            if(Calc(loop) == t) count++;        cout<<count<<endl;    }    return 0;}long Calc(int Status){    long buffer=1,result=0;    int currentNum;    Operator op,elapsedop=OpNo;    for(currentNum=2;currentNum<=9;currentNum++)    {        op=Status%3;        Status/=3;        if(OpNo == op)            buffer=buffer*10+currentNum;        else        {            if(OpSub == elapsedop)                result-=buffer;            else                result+=buffer;            buffer=currentNum;            elapsedop=op;        }    }    if(OpSub == elapsedop) result-=buffer;    else result+=buffer;    return result;} 

阅读(1529) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册