请教大神,怎么编个程序解决这个数学问题呢?
求解: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;
}
