最終的結果是输入完所有的情况后,没有退出程序。。。
/*
//回溯法
#define N 100
#define M 100
#include<stdio.h>
int com_back(int m,int n)
{
int a[N];
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[N];
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;
}
*/
后来才改过来了。