前言
目前在做暴力搜索的专题,学到了一个新方法;然后做了这道题P1618 三连击(升级版)
解题思路
解题套路感觉差不多,就是利用9个for循环去枚举所有可能的情况,然后在最底层的循环处判断是否满足条件再去打印输出。直接上代码了:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int A,B,C,a,b,c,d,e,f,g,h,i,m1,m2,m3,is_have=0;
scanf("%d%d%d",&A,&B,&C);
for(a=1;a<=9;a++){
for(b=1;b<=9;b++){
if(b==a){
continue;
}else{
for(c=1;c<=9;c++){
if(c==a||c==b){
continue;
}else{
for(d=1;d<=9;d++){
if(d==a||d==b||d==c){
continue;
}else{
for(e=1;e<=9;e++){
if(e==a||e==b||e==c||e==d){
continue;
}else{
for(f=1;f<=9;f++){
if(f==a||f==b||f==c||f==d||f==e){
continue;
}else{
for(g=1;g<=9;g++){
if(g==a||g==b||g==c||g==d||g==e||g==f){
continue;
}else{
for(h=1;h<=9;h++){
if(h==a||h==b||h==c||h==d||h==e||h==f||h==g){
continue;
}else{
for(i=1;i<=9;i++){
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h){
continue;
}else{
m1=100*a+10*b+c;
m2=100*d+10*e+f;
m3=100*g+10*h+i;
if((float)m2/m1==(float)B/A&&(float)m3/m1==(float)C/A&&(float)m3/m2==(float)C/B){
printf("%d %d %d\n",m1,m2,m3);
is_have=1;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if(is_have){
;
}else{
printf("No!!!");
}
return 0;
}