全排列
2016-03-27 11:19
288 查看
求1--m的n位数的全排列
输入数据为:T(数据组数),m,n
exp:输入:1 3 2
输出:
32
31
23
21
13
12
#include<stdio.h>
#include<string.h>
#define max 10000
int biaoji[max];//标记数组
int a[max];//放入数据
void dfs(int m,int n,int k)//m:1到m n:n位数 k:表示第K位数
{
int i;
if(k==n)
{
for(int j=0;j<n;j++)
printf("%d",a[j]);
printf("\n");return;
}
for(i=m;i>=1;i--)//我是从大到小的全排列,根据需求自己调整
{
if(biaoji[i]==0)
{
a[k]=i; //将数据放进数组,方便输出
biaoji[i]=1;//数据被使用加上标记
dfs(m,n,k+1);
biaoji[i]=0;//回退的时候再把标记解除
}
}
return;
}
int main ()
{
int T;
int m,n;
scanf("%d",&T);
while(T--)
{
memset(biaoji,0,sizeof(biaoji));
memset(a,0,sizeof(a));
scanf("%d%d",&m,&n);
dfs(m,n,0);
}
return 0;
}
相关文章推荐
- jQuery 事件中stoppropagation和stopimmediatepropagation的区别
- collection--集合类
- jQuery 简单归纳总结
- 一步步点亮LED4_使用位运算实现复杂点亮要求
- 嵌入式Linux实现TCP/IP通信
- 数组中只出现一次的两个数字
- Hibernate学习笔记(一):级联删除
- java.io.FileNotFoundException: http://www.xxxxx.net:8080/test/test/ 403错误
- Android 应用界面开发笔记 Service
- NVIDIA Jetson TK1 rosrun rviz segmentation fault的解决方法
- iOS开发调起微信支付显示白色确定按钮的解决方案
- 2016年大学生研究性学习和创新性实验计划项目 我的项目 :二维码数据反馈系统 第四周作业
- Java的进程与线程
- SQL join笔记
- 转战gulp,实现前端静态资源的压缩,加MD5戳,替换引用,加CDN前缀
- python 程序设计语言 笔记(三)
- TreeSet,Hashset,Set集合转为整型数组
- 迭代器模式和java集合Collection(一)ArrayList
- .Net AOP (四)EnterpriseLibary 实现方法
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment