输出一个整数的全排列

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 // 数组a用来保存一种排列,也就是说100以内数(不包括100)的排列
 5 int a[100], n, count = 0;
 6 // 交换数组中的两个元素
 7 void swap(int t1, int t2)
 8 {
 9     int temp;
10     temp = a[t1];
11     a[t1] = a[t2];
12     a[t2] = temp;
13 }
14 // 用来输出一种排列
15 void output()
16 {
17     int j;
18     printf("\n");
19     for(j = 1; j <= n; ++j)
20         printf("%d ", a[j]);
21     ++count;
22 }
23 void try(int t)
24 {
25     int j;
26     if(t > n)
27         output();
28     else
29         for(j = t; j <= n; ++j)
30         {
31             swap(t, j);
32             try(t + 1);
33             // 回溯时,恢复原来的排列,注意回溯的位置
34             swap(t, j);
35         }
36 }
37 // 该算法的时间复杂度为O(n!)
38 // 输出整数n的全排列
39 int main()
40 {
41     int i;
42     printf("Please input permutation number :\n");
43     scanf("%d", &n);
44     for(i = 1; i <= n; ++i)
45         a[i] = i;
46     try(1);
47     printf("\ncount = %d", count);
48     return 0;
49 }

当你发现自己属于大多数人这边的时候,都该停下来反思一下

时间: 2024-08-28 11:31:12

输出一个整数的全排列的相关文章

【输出一个整数的二进制存储形式】

// 输出一个整数的二进制存储形式void putBinary(int n){ int bits = sizeof(n) * 8; while (bits-->0) { printf("%d", n>>bits&1); if (bits%4==0) printf(" "); } printf("\n");}

顺序输出一个整数的各位数字

从高位开始逐位输出一个整数的各位数字:输入一个整数,从高位开始逐位分割并输出它的各位数字. #include<stdio.h> int main(void) { int i,j,m,n,s,k,a,b=0; scanf("%d",&m); k=m; do { m=m/10; b++; }while(m!=0); for(i=1;i<=b;i++) { s=k; for(j=1;j<=b-i;j++) s=s/10; n=s%10; printf(&quo

openjudge #输出一个整数序列中与指定数字相同的数的个数。

输入格式 输入包含三行:第一行为N,表示整数序列的长度(N <= 100):第二行为N个整数,整数之间以一个空格分开:第三行包含一个整数,为指定的整数m 输出模式 输出为N个数中与m相同的数的个数. 样例输入 3 2 3 2 2 样例输出 2 #include<stdio.h> int main() { int a[100],n,i,m,count; while(scanf("%d",&n)!=EOF) { count=0; for(i=0;i<n;i+

【C语言】输出一个整数的每一位

#include<stdio.h> int main() { int n; printf("请输入一个五位整数:");    // 在此输入五位数,若有需要,可更改 scanf("%d",&n); printf("%d %d %d %d %d\n",n/10000,n%10000/1000,n%1000/100,n%100/10,n%10); return 0; }

输出一个整数的每一位

 #include<stdio.h> int main() { int a,b,c,number; scanf("%d",&number); printf("百位:%d\n",a=number/100); printf("十位:%d\n",b=(number-100*a)/10); printf("个位:%d\n",c=number-100*a-10*b); return 0; } 以此类推,若该数不止三位

Python3基础 在print中用 %d 输出一个整数

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ >>> print("%d + %d = %d" % (1,2,3)) 1 + 2 = 3 >>> ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Python版本3.5

输出一个整数的每一位。

#include <stdio.h> int main() {  int a,b;  scanf("%d",&a);  while (a!=0)  {   b=a%2;   a=a/2;   printf("%d\n",b);  }  return 0; }

输出一个整数的每一位 1.0

#include<stdio.h> #include<windows.h> int main() {     int a,b;     scanf("%d",&a);     while(a!=0)     {         b=a%10;         a=a/10;         printf("%d\n",b);         Sleep(1000);     }     system("pause"

输出一个整数内的所有质数

#include<stdio.h>#include<math.h>int main(){  int n,i,t,j;  scanf("%d",&n);  if(n<=0)  {   return 0;  }   else  {   for(i=2;i<=n;i++)    {     t=sqrt(i);     for(j=2;j<=i;j++)     {      if(i%j==0) break;     }     if(j&