问题描述
【问题描述】
将1到9这九个数字分别组成3个三位数a,b,c,每个数字恰好出现一次,要求a: b :c=1:2:3。
【输入形式】
无
【输出形式】
要求按照"a b c"的格式(三个数字以一个空格隔开)输出所有解, 每行一个解;如果存在多个解,按a的值升序排列。
C++代码
蛮力法
#include <iostream>
#include <algorithm>
using namespace std;
bool judge(int x[9]);
int main(){
int x[9];
for(int i=123;i<330;i++){
x[0]=i/100;
x[1]=i/10%10;
x[2]=i%10;
x[3]=2*i/100;
x[4]=2*i/10%10;
x[5]=2*i%10;
x[6]=3*i/100;
x[7]=3*i/10%10;
x[8]=3*i%10;
if(judge(x)){
printf("%d%d%d %d%d%d %d%d%d\n",x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8]);
}
}
}
bool judge(int x[9]){
int a[9];
for (int i=0;i<9;i++){
a[i]=x[i];
}
sort(a,a+9);
if(a[0]==0){
return false;
}
for(int i=1;i<9;i++){
if(a[i]==0){
return false;
}else if(a[i-1]==a[i]){
return false;
}
}
return true;
}