设计一个算法求象棋这些棋子各代表哪些数字

    科技2022-07-16  132

    设计一个算法求象棋这些棋子各代表哪些数字

    【象棋算式】   

                                兵      炮       马       卒

                        +      兵      炮       车       卒


                       车     卒      马       兵       卒

    【问题求解】

              在采用逻辑推理时先从“卒”入手,卒和卒相加,和的个位数仍是卒,这个数只能是0,确定卒是0后所有是卒的地方都为0.这时会看到“兵+兵=车 0”,从而得到兵为5、车是1,进一步得到“马+1=5”,所以马=4,又有“炮+炮=4”,从而炮=2。

         最后得到兵=5,炮=2,马=4,卒=0,车=1

         用代码实现时:设兵为a,炮为b,马为c,车为d,卒为e,要注意它们的值互不相同,代入象棋算式中

    源代码如下:

    #include <iostream> using namespace std; //设计一个算法求象棋这些棋子各代表哪些数字 void fun() { int a, b, c, d, e, m, n, s; //设兵为a,炮为b,马为c,车为d,卒为e for (a = 1; a <= 9;a++) { for (b = 0; b <= 9;b++) { for (c = 0; c <= 9;c++) { for (d = 0; d <= 9;d++) { for (e = 0; e <= 9;e++) { if (a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e) { continue; }else{ //代入象棋算式中 m = a * 1000 + b * 100 + c * 10 + d; n = a * 1000 + b * 100 + e * 10 + d; s = e * 10000 + d * 1000 + c * 100 + a * 10 + d; if (m+n==s) { cout << "兵=" << a<<endl; cout << "炮=" << b<<endl; cout << "马=" << c << endl; cout << "车=" << d << endl; cout << "卒=" << e << endl; } } } } } } } } int main() { fun(); system("pause"); return 0; }

    输出结果:

    兵=5 炮=2 马=4 车=0 卒=1 请按任意键继续. . .

    Processed: 0.009, SQL: 8