凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
DFS
#include<iostream> using namespace std; int arr[10]={0}, brr[10], s=0; void DFS(int i) { if (i==9+1){ if ((10-brr[1])*brr[3]*(brr[7]*100+brr[8]*10+brr[9])== brr[2]*(brr[7]*100+brr[8]*10+brr[9])+brr[3]*(brr[4]*100+brr[5]*10+brr[6])){ s++; } return ; } else { for (int j=1; j<=9; j++){ if (!arr[j]){ brr[i]=j; arr[j]=1; DFS(i+1); arr[j]=0; } } } } int main(){ DFS(1); cout<<s<<endl; return 0; }
暴力法
#include<iostream> using namespace std; int main() { int s=0; for (int i=1; i<10; i++) for (int j=1; j<10; j++) if (j!=i) for (int k=1; k<10; k++) if (k!=j&&k!=i) for (int l=1; l<10; l++) if (l!=k&&l!=j&&l!=i) for (int z=1; z<10; z++) if (z!=i&&z!=j&&z!=k&&z!=l) for (int x=1; x<10; x++) if (x!=z&&x!=l&&x!=k&&x!=j&&x!=i) for (int c=1; c<10; c++) if (c!=x&&c!=z&&c!=l&&c!=k&&c!=j&&c!=i) for (int v=1; v<10; v++) if (v!=c&&v!=x&&v!=z&&v!=l&&v!=k&&v!=j&&v!=i) for (int b=1; b<10; b++) if (b!=v&&b!=c&&b!=x&&b!=z&&b!=l&&b!=k&&b!=j&&b!=i){ if ((10-i)*k*(c*100+v*10+b)==j*(c*100+v*10+b)+k*(l*100+z*10+x)) s++; } cout<<s; }