请教大神,怎么编个程序解决这个数学问题呢?
求解:198 * ?+ 174 * ? + 1254 * ? = 8516
初看以为一颗树~后来发现原来更像一个栈~这里弄了一些时间理解~
[此贴子已经被作者于2017-6-28 14:09编辑过]
#include<stdio.h> void fun(int a[],int b[],int sum,int i,int k,int len); void Print(int a[],int b[],int k,int len); int main() { int a[10]={198,174,1254}; int b[10]={0}; int len=3; int k=8514; fun(a,b,0,0,k,len); return 0; } void fun(int a[],int b[],int sum,int i,int k,int len) { b[i]=0; while (1) { if (i<len-1) fun(a,b,sum,i+1,k,len); if (sum>=k) break; sum+=a[i]; ++b[i]; } if (sum==k&&i==len-1) Print(a,b,k,len); } void Print(int a[],int b[],int k,int len) { int i=0; for (i=0;i<len-1;++i) printf("%d*%d+",a[i],b[i]); printf("%d*%d=%d\n",a[i],b[i],k); }
[此贴子已经被作者于2017-6-28 00:01编辑过]
#include<stdio.h> #define K 8514 #define SUM(i,j,k) ((i)*198+(j)*174+(k)*1254) int main() { int i=0; int j=0; int k=0; for (i=0;i*198<=8516;++i) for (j=0;i*198+j*174<=K;++j) for (k=0;SUM(i,j,k)<=K;++k) if (SUM(i,j,k)==K) printf("%-4d%-4d%-4d%-4d\n",i,j,k,SUM(i,j,k)); return 0; }