qq_335498556 2016-05-13 12:55 采纳率: 100%
浏览 1124
已采纳

求一个程序算法,关于找出符合条件的操作符排列?

给一个初始操作数a,然后对这个操作数执行n次加减乘余的计算操作【每次操作a自增1,而且不考虑运算符优先级,谁在前面先算谁】,最后会得到一个结果数x,问如何求出这些操作符??
重要:程序不能使用递归,最好只用一个主函数!!
比如,给你一个初始数3,执行7次加减乘余操作,最后得到结果147,那么有一种操作符序列满足条件:* + + - * + +
既:3*4+5+6-7*8+9+10=147

  • 写回答

5条回答 默认 最新

  • 纹枰老妖 2016-05-13 14:33
    关注

    亲测合格,请验证:
    #include
    #include
    using namespace std;

    int num, opera_num, result;
    char opera[100];

    void main()
    {
    int i,j=0, max = 4, right_max=1, right_extent, model=3, model_temp,test_num;
    cout << "请输入操作数" << endl;
    cin >> num ;
    cout << "请输入操作符个数" << endl;
    cin >> opera_num;
    cout << "请输入最后结果数" << endl;
    cin >> result;

    for (i = 1; i < opera_num; i++)
    {
        max *= 4;
        model *= 4;
        right_max *= 4;
    }
    for (i = 0; i < max; i++)
    {
        test_num = num;
        right_extent = right_max;
        for (model_temp = model; model_temp > 0; model_temp /= 4)
        {
            switch ((i&model_temp) / right_extent)
            {
            case 0:
                opera[j] = '+';
                test_num = test_num + (++num);
                break;
    
            case 1:
                opera[j] = '-';
                test_num = test_num - (++num);
                break;
    
            case 2:
                opera[j] = '*';
                test_num = test_num * (++num);
                break;
    
            case 3:
                opera[j] = '%';
                test_num = test_num % (++num);
                break;
            }
            right_extent /= 4;
            j++;
        }
        num -= opera_num;
        j = 0;
        if (test_num == result) goto end;
    }
    printf("没有符合结果的预测,请检查输入!");
    system("pause");
    

    end:
    printf("这种公式符合结果数:%d ", num);
    for (i = 0; i < opera_num; i++) printf("%c %d ", opera[i], ++num);
    system("pause");
    }

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题