0
点赞
收藏
分享

微信扫一扫

5.2回溯法求解这些棋子各代表哪些数字

juneyale 2022-12-28 阅读 60


1.题目描述

​​链接​​

2.个别参数解释

例如dig[a] = 1 时,dig[b] dig[c] dig[d] dig[e]就不能取1了

#include<bits/stdc++.h>
using namespace std;

void f() {
bool dig[10];
for(int a = 1; a <= 9; a++) {
dig[a] = 1;
for(int b = 0; b <= 9; b++) {
if(!dig[b]) {
dig[b] = 1;
for(int c = 0; c <= 9; c++) {
if(!dig[c]) {
dig[c] = 1;
for(int d = 0; d <= 9; d++) {
if(!dig[d]) {
dig[d] = 1;
for(int e = 0; e <= 9; e++) {
if(!dig[e]) {
dig[e] = 1;
int m = a * 1000 + b * 100 + c * 10 + d;
int n = a * 1000 + b * 100 + e * 10 + d;
int 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;
}
dig[e] = 0;
}
dig[d] = 0;
}
dig[c] = 0;
}
dig[b] = 0;
}
dig[a] = 0;
}
}
}
}
}
}

int main() {
f();
return 0;
}


举报

相关推荐

算法笔记|Day20回溯算法II

0 条评论