您的位置:首页 > 其它

我写的回溯法,出现了一个BUG,找了好久。。。。才对上。。。

2010-04-13 22:49 267 查看
最終的結果是输入完所有的情况后,没有退出程序。。。

/*

//回溯法

#define N 100

#define M 100

#include<stdio.h>

int com_back(int m,int n)

{

int a
;

int i=0;

a[i]=1;

do

{

if(a[i]-i<=m-n+1)

{

if(i==n-1)

{

for(int j=0;j<=i;j++)

{

printf("%d ",a[j]);

}

printf("/n");

a[i]++;

continue;

}

i++;

a[i]=a[i-1]+1;

}

else

{

if(i==0)return 0;

i--;

a[i]++;

}

}while(1);

return 1;

}

int main()

{

int m=5,n=3;

com_back(m,n);

return 0;

}

*/

/*

#include<stdio.h>

#define N 100

void com_back(int m,int n)

{

int a
;

int i=0;

a[i]=1;

int remain;

remain=m-a[i];

// do

// int mnt=m/n;

// while(a[i]<=mnt)

do{

if(i==n-1)

{

a[i]+=remain;

for(int i=0;i<n;i++)

{

printf("%d ",a[i]);

}

printf("/n");

i--;

a[i]++;

// a[i+1]=a[i];

remain=a[i+1]-1;

// if(remain<a[i]) return;

}

else if(remain>=a[i])

{

i++;

a[i]=a[i-1];

remain-=a[i];

if(remain<0) break;

}

else

{

if(i<1) return;// break;

i--;

a[i]++;

remain=a[i+1]+remain-1;//我一开始用a[i]来代替remain这就是出错的地方

}

}while(1);

}

int main()

{

int m=7,n=3;

com_back(m,n);

return 0;

}

*/

后来才改过来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: