南阳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;
}
#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;
}
相关文章推荐
- Friend Chains(spfa)
- android开发之interpolator的用法详解
- java并发编程-Executor框架
- linux内容批量替换的命令
- ULINK2升级之后低版本的keil无法识别解决办法
- iOS 7.1 SDK 代码或暗示苹果即将把Siri引入Apple TV
- ALTERA FIFO 读写verilog代码
- Levinux,解决在非linux系统下在linux环境中使用和学习python问题
- VC++ 获取文件属性创建时间、修改时间和访问时间
- Daily English words study
- Web.xml各版本模版
- 简单的makefile模板
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- SCDPM 2012R2之保护hyper-v虚拟机
- js中获得当前时间是年份和月份
- 3DS电游“妖怪手表”销量破百万 7月出售新作
- open gl 相关网址
- 省市县三级级联的实现
- linux奇怪问题整理
- 《编程之美》读书笔记:面试杂谈