您的位置:首页 > 其它

南阳32 组合数——练习回溯深搜

2014-04-25 14:27 309 查看
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define maxn 200 //数组要开足够大

int mark[maxn];

int k,store[maxn],r,n;

void STL(int r)

{

int i;

if(r==0)

{



int ok=1;

for(i=k;i>=1;i--)

if(store[i-1]>store[i])

{ok=0;break;}

if(ok)

{

for(i=k;i>=1;i--)

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

printf("\n");

}

}

for(i=n;i>=1;i--)

{



if(!mark[i])

{

store[r]=i;

mark[i]=1;

STL(r-1);

mark[i]=0;

}

}



}

int main()

{

scanf("%d%d",&n,&r);



memset(mark,0,sizeof(mark));

memset(store,0,sizeof(store));

k=r;

STL(r);

//system("pause");

return 0;

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