/* 將1-9九個數不重復地賦給不同的9個元素 ,實現形如a/bc+d/ef=f/hi 的形式:例:1/26+5/78=4/39 1/32+5/96=7/84 (注意:1/26+5/78=4/39 和5/78+1/26=4/39 只能算一種解)求滿足條件的解共有多少個?
*/
#include "stdio.h"
void main()
{int i,k,g,s;int m1,m2,m3,a[10];a[1]=1;i=1;g=1;s=0;while(1){g=1;for(k=i-1;k>0;k--) //注意此處很容易由于習慣錯寫成 for(k=i-1;i>0;i--)if(a[k]==a[i]) {g=0; break;} //兩數相同,標記g=0if(i==9 && g==1 && a[1]<a[4]){ //為了避免解的重復所以a[1]<a[4]m1=a[2]*10+a[3];m2=a[5]*10+a[6];m3=a[8]*10+a[9]; if(a[1]*m2*m3+a[4]*m1*m3==a[7]*m1*m2){s++;printf("%d/%d+%d/%d=%d/%d \t",a[1],m1,a[4],m2,a[7],m3);if(s%2==0) printf("\n");} } if(i<9 &&g==1){i++; a[i]=1; continue;} //向前繼續走,執行continue語句直接跳到while語句,則不在執行下面的語句 while(a[i]==9 && i>1) i--; //向上一步回溯 if(a[i]==9 && i==1) break; //注意此處不能簡寫成 if(a[1]==9)else a[i]++; }printf("共有%d個解!",s);
}