总结
- 思维很重要,运用折半思维,只考虑前一半的数字,后一半是对称的
- 感觉这个还算是暴力算法,应该还有优化的地方
关于调试
- 现在写代码还是会有粗心的地方
- 调试代码只能看到自己定义的变量的值
- 将调试与输出追踪相结合,或者自己用字符或者字符串定义变量,让变量可视化,这样可以更快的发现问题解决问题
#include <iostream>
using namespace std;
int main() {
int n = 0;
scanf("%d", &n);
for (int i = 1; i < 10; ++i) {
if (i * 2 > n) {
break;
}
for (int j = 0; j < 10; j++) {
if ((j + i) * 2 > n) {
break;
} else {
char three = '0'+ (n - (j + i) * 2);
// cout << three <<endl<<"**"<<endl;
if ((n - (j + i) * 2) < 10){
printf("%d%d%d%d%d\n", i, j, (n - (j + i) * 2),j,i);
}
}
}
}
for (int i = 1; i < 10; ++i) {
if (i * 2 > n) {
break;
}
for (int j = 0; j < 10; j++) {
if ((j + i) * 2 > n) {
break;
} else {
// char three = '0'+ ((n - (i + j) * 2) / 2);
// char threenum = '0'+((n - (i + j) * 2) % 2);
// cout << three << threenum <<endl<<"**"<<endl;
if ((n - (i + j) * 2) % 2 == 0 && (n - (i + j) * 2) / 2 < 10) {
printf("%d%d%d%d%d%d\n", i, j, (n - (i + j) * 2) / 2, (n - (i + j) * 2) / 2, j, i);
}
}
}
}
return 0;
}