?? 遞歸列出所有的條目.txt
字號:
#include<stdio.h>
#include<stdlib.h>
int fin(int m,int n,int k,int* p){
int j=0,q=0,h=k;
int* a=NULL;
a=(int*)malloc(sizeof(int)*(m+1));
for(j=1;j<=m;j++)a[j]=p[j];
j=m;q=a[k];
if((k<1)||k>m)return 0;
while(((a[k]<a[k+1]-1)||k==m)&&(a[k]<n)){
j=m;
a[k]++;
while(j>0){
if(j!=k)printf("%d ",a[j]);
else printf("%d ",a[j]);
j--;
}
printf("\n");
fin(m,n,h-1,a);
printf("\n");
}
free(a);
return 1;
}
void main(){
int m,n;
int i=1,k=0,j;
int *p;
FILE *fp;
if((fp=fopen("D:\\yt\\yt12.txt","r"))==NULL){
printf("file open error\n");
exit(1);
}
while(!feof(fp)){
m=0;
n=0;
fscanf(fp,"%d%d",&m,&n);
if(m>n||n<=0||m<=0){
printf("m=%d n=%d error!\n",m,n);
continue;
}
printf("********************start*********************\n\n");
printf("m=%d n=%d\n",m,n);
if(m==n){
while(i<=n)printf("%d ",i);
printf("\n");
exit(2);
}
if(m<n){
i=m;
p=(int*)malloc(sizeof(int)*(m+1));
for(j=1;j<=m;j++)p[j]=0;
while(i>0){
printf("%d ",i);
p[i]=i;
i--;
}
printf("\n");
fin(m,n,m,p);
free(p);
}
printf("*******************end**********************\n");
}
fclose(fp);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -