算法提高 排列数  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  0、1、2三个数字的全排列有六种,按照字母序排列如下:
  012、021、102、120、201、210
  输入一个数n
  求0~9十个数的全排列中的第n个(第1个为0123456789)。
输入格式
  一行,包含一个整数n
输出格式
  一行,包含一组10个数字的全排列
样例输入
1
样例输出
0123456789
数据规模和约定
  0 < n <= 10!
 
 #include<stdio.h>
#include<string.h>
long long n,sum;
int label[];//用来标记数字i是否被用了,即是否已被放在了排列中
int a[];
void SouSuo(int pos){
if(pos==){ //表示当前数组a中已有10个数字
sum++;
if(sum==n){
for(int i=; i<; i++)
printf("%d",a[i]);
}
}
for(int i=; i<=; i++){//枚举数字0到数字9
if(!label[i]){//若数字i还没被放在当前排列中
a[pos]=i;//将i赋给当前排列a数组的第pos位置
label[i]=;//数字i已放入排列中,标记为1
SouSuo(pos+);//继续搜索下一个位置
label[i]=;//清除标记
}
}
}
int main(){
scanf("%d",&n);
if(n==){
return ;
}
memset(label,,sizeof(label));//给标记赋初值0
sum=;
SouSuo();
return ;
}

最新文章

  1. 关于通过jq /js 实现验证单选框 复选框是否都有被选中
  2. Spring task executor同异步
  3. java获取点击微信自定义菜单的用户openid
  4. Sublime_Tip_01
  5. PHP Cookies
  6. NOIP2012模拟试题【奶牛晒衣服】
  7. STM32 内部flash的读写程序
  8. spec文件中的 %pre %post %preun %postun
  9. WinForm中一个窗体调用另一个窗体
  10. caffe实现多任务学习
  11. dev gridview自动列宽和单元、行、checkbox选中和多选
  12. Git for Windows之分支管理、分支合并、解决分支冲突
  13. java微信开发之接受消息回复图片或者文本
  14. velocity的一些优化记录
  15. Top N之MapReduce程序加强版Enhanced MapReduce for Top N items
  16. 原创Oracle数据泵导出/导入(expdp/impdp)
  17. vertical-align负值和margin-bottom负值的区别
  18. angular 基本依赖注入
  19. Android之九宫格解锁的实现
  20. 【BZOJ4361】isn

热门文章

  1. 面对对象之差异化的网络数据交互方式--单机游戏开发之无缝切换到C/S模式
  2. es5 - array - reverse
  3. ant design 中的 Select 组件常规写法
  4. 在ubuntu下如何搜索文件?
  5. OpenERP 源码变更后数据库升级
  6. Entity Framework Code First关系映射约定【l转发】
  7. iOS开发之UITableView的使用
  8. Tomcat 改服务器编码(Java 修改字符串编码格式)
  9. android源码相关网站
  10. oracle中如何设置主键并且让其自动增长