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

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

【象棋算式】   

                            兵      炮       马       卒

                    +      兵      炮       车       卒


                   车     卒      马       兵       卒

【问题求解】

          在采用逻辑推理时先从“卒”入手,卒和卒相加,和的个位数仍是卒,这个数只能是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
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值