版权声明:作者:Valarjin https://blog.csdn.net/weixin_42125215/article/details/88750753
2-6 排列问题
用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。
#include<iostream>
using namespace std;
int main()
{
int a,b[9],count=1; //count用来计数
//123-987内取值,按比例来说第一个数 最大取到987/3=329
for (a = 123; a <= 329; a++) {
if (a * 2 <= 658 && a * 3 <= 987) {
int a1 = a, a2 = a * 2, a3 = a * 3;
//把值存入数组中
b[0] = a / 100; b[1] = a / 10 % 10; b[2] = a % 10;
b[3] = a1 / 100; b[4] = a1 / 10 % 10; b[5] = a1 % 10;
b[6] = a2 / 100; b[7] = a2 / 10 % 10; b[8] = a2 % 10;
for (int j = 1; j < 9; j++) {
int t = b[j-1];
//排序
if (b[j] <= t) {
b[j - 1] = b[j];
b[j] = t; //得到从大到小排序的序列
}
}
}
//去重,因为已经排序,所以只需要对前后位比较即可
for (int i = 1; 1 < 9; i++)
{
if (b[i - 1] == b[i])
{
break;
}
}
//在第一个循环内输出这个数组,再到下一个循环
count++;
cout << a << " " << a*2 << " " << a*3 << endl;
}
cout << count << endl;
system("pause");
return 0;
}
我定义了一个count记录一下输出的总个数
思路比较渣,不知道有没有其他好的办法解决