编写一个实验程序,求出a、b、c、d、e,满足ab-cd-e=1方程,其中所有变量的取值为1~5并且均不相同。
注:原书上的方程为ab-cd+e=1,该方程无解。
分析:采用回溯法,以找到变量的个数为终结条件,然后根据判断是否满足方程组输出。for循环五个数依次对应abcde,然后用vis[i]数组判断当前i的值是否被使用,没使用就可以用。使用后就不能用。
#include<iostream>
#include<Windows.h>
using namespace std;
int vis[6]={0};
void f(int a[],int k,int n)
{
if(k==n)
{
if(a[0]*a[1]-a[2]*a[3]-a[4]==1)
{
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
}
return;
}
for(int i=1;i<=n;i++)
{
if(vis [i]==0)
{
vis[i]=1;
a[k]=i;
f(a,k+1,n);
vis[i]=0;
}
}
}
int main()
{
int a[6];
f(a,0,5);
system("pause");
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)