首页 > nyoj19 全排列

nyoj19 全排列

http://acm.nyist.net/JudgeOnline/status.php?pid=19

 1 #include
 2 #include
 3 int n,a[10];
 4 bool vis[10];//标示数字是否被用过 
 5 void f(int k,int m)//k用来给a中第k个元素赋值,m表示还需要寻找的数字个数 
 6 {
 7     for(int i=1;i<=n;++i)
 8     {
 9         if(!vis[i])  
10             a[k]=i;
11         else 
12             continue;//用过的 话找下个数字 
13         vis[i]=1;//标志为1,下层递归不再使用 
14         if(m>1)//m>1继续寻找
15             f(k+1,m-1);
16         else
17         {
18             for(int j=1;j<=a[0];++j)//否则寻找完毕,输出 
19                 printf("%d",a[j]);
20             printf("
");
21         }
22         vis[i]=0;//这点很重要,因为后面的循环还需要再用,否则就只输出一个递增的序列就完了,为此我贡献了好几个TE,纳闷的是为什么不是WA呢? 
23     }        //刚开始在这加了一个memset(),结果一直不对,因为这样后面会出现重复的数字,所以不行 
24 }
25 int main()
26 {
27     int N;
28     scanf("%d",&N);
29     while(N--)
30     {
31         scanf("%d%d",&n,&a[0]);//n表示数字界限,用全局变量a[0]存放待输出的数字个数 
32         f(1,a[0]);
33     }
34     //system("pause");
35     return 0;
36 }
View Code

 

转载于:https://www.cnblogs.com/zeze/p/nyoj19.html

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 题目:找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n...

  •   罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符          数值 I             1 V             5 X             10 L             50 C             100 D             500 M            ...

  • 排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2076    Accepted Submission(s): 816 Problem Description Ray又...

  • Word2007中为数字加上下标的几种方法: 一:通过插入>公式>>选择,通过此上下标。 二:写下数字,例如5,然后按ctrl+shift+=号三个键,就可添加上标,按ctrl+=号两键,就可标注下标。 三、开始菜单中的X2,X2 转载于:https://www.cnblogs.com/jufu/archive/2012/03/3...