求高手帮忙写段程序,穷举法求方程的解

来源:百度知道 编辑:UC知道 时间:2024/05/09 12:26:31
a1*x1+a2*x2+a3*x3+a4*x4.......=C
其中a1..是系数,x1..是未知数
a1 ,x1 C 都是正整数

数字是下标,*是乘号

/* VC++6.0 编译通过,请保存为.cpp文件 */

#include <iostream>
using namespace std;

int *a,*x,n,C;

void printx()
{
printf("X=");
for(int i=0;i<n;++i) printf("%3d ",x[i]);
printf("\n");
}//打印一个解

bool search(int k,int sum)
{
if(k==0) return sum==0;
else
for(int i=1;i<=sum/a[k-1];++i)
{
x[k-1]=i;
if(search(k-1,sum-a[k-1]*i)) printx();
}
return false;
}//搜索所有可能的解

int main()
{
printf("n="); scanf("%d",&n);//输入未知数个数n

printf("a="); a=new int[n];
for(int i=0;i<n;++i) scanf("%d",&a[i]);//输入a[i], i=0~(n-1)

printf("C="); scanf("%d",&C);//输入C

x=new int[n];

search(n,C);//如无输出则表明方程无正整数解