用C语言 编写程序输入一个整数,输出从1到这个整数的所有排列组合。 样例一: 输入:3

用C语言 编写程序输入一个整数,输出从1到这个整数的所有排列组合。
样例一:
输入:3
输出:1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

#include <stdio.h>
int s[1000];
void f(int a[],int len,int n)
{
if (!n)
{
for (int i=0;i<len-1;i++)
{
printf("%d ",s[i]);
}
printf("%d\n",s[len-1]);

for (int i=0;i<len;i++)
{
if (a[i]!=0)
{
s[len-n]=a[i];
a[i]=0;
f(a,len,n-1);
a[i]=i+1;
}
}
}

int main()
{
int n;
int a[1000];
while (~scanf("%d",&n))
{
for (int i=0;i<n;i++) a[i]=i+1;
f(a,n,n);
}
}

温馨提示:内容为网友见解,仅供参考
无其他回答

用C语言编写一个排列组合的程序
int len1,len2,len3;void input(int len1,int len2,int len3){ printf("%d %d %d\\n",a[len1],a[len2],a[len3]);} void solve(int len1,int len2,int len3){ input(len1,len2,len3);if(len1==2) return;if(len3<4) len3++;else if(len2<3){ len2++;len3=len2+...

在C语言中,如何输出一组数的排列组合
perm(list, 0, k-1);printf("total:%d\\n", n);return 0;}该程序的输入为一个任意自然数n,将输出从1到n的全排列。

有字母ABCD,请用C语言编写程序,输出由该四个字母组成的字符串.要求如下...
典型的排列组合的问题啊。这个程序不错的:include<stdio.h> void main(void){ char ch[]="ABCD";int i,j,k,n=4;int m=0;for(j=0;j<n;j++){ for(k=0;k<n;k++){ for(i=0;i<n;i++){ if(i!=j&&j!=k&&i!=k){ printf("%c%c%c\\n",ch[j],ch[k],ch[i]);m+...

c语言 给定一个整数n,然后再给一个数m,m表示从n中选m个数,打印出各种排...
void print(int n, int m, int p, int x){ int i,j;if(p){ p--;num[x - p - 1] = m;for(i = m + 1; i < n; i++){ print(n, i, p, x);num[x - p -1] = i;} } else { printf("%d", num[0]);for(j=1; j<x; j++) printf(" %d", num[j]);...

...如1,3,6,7)怎么用c语言编写:四个数所有排列组合
void swap(int &a, int &b){ int temp = a;a = b;b = temp;} void Permutation(int *pStr, int begin, int end){ if(begin == end - 1) \/\/只剩一个元素 { int i;for(i = 0; i < end; i++) \/\/打印 printf("%d ", pStr[i]);printf("\\n");} else { int k;fo...

用c语言编写程序,输出7,8,9三个数字的全部排列组合顺序
include<stdio.h> define N 3 void aArrange(int a[],int j,int b){ int i,k;int temp;for(i=j;i<b;i++){ temp=a[i];a[i]=a[j];a[j]=temp;aArrange(a,j+1,b);if(j==b-1){ for(k=0;k

如何用C语言编一个彩票32选8并显示所有排列组合的程序。
void f(){ int i1,i2,i3,i4,i5,i6,i7,i8;for (i1=1;i1<32;i1++)for (i2=1;i2<32;i2++){if (i1==i2) continue;for (i3=1;i3<32;i3++){if (i1==i3) continue; if (i2==i3) continue;for (i4=1;i4<32;i4++){if (i1==i4) continue; if (i2==i4) ...

c语言短整型的低四位反转问题 求助大佬
include <stdio.h> int main(){ char c=getchar();printf("%#hhx",c^0x0F);return 0;}

C语言编程,求好的算法:1,2,3,4,5,6六个数,相邻两个数相加结果均为素数...
if(!(n%i)) return 0; return 1;}int main(void){ char a[6]={1,2,3,4,5,6},i,j,k; k=i=0; while(1){ j = i<5 ? i+1 : 0; if(!prime(a[i]+a[j])){ k=a[j]; a[j]=a[0]...

如何用C语言编一个彩票15选5并显示所有排列组合的程序。
main(){int i,j,k,m,n;long int count=0;for(i=1;i<=15;i++)for(j=i+1;j<=15;j++)for(k=j+1;k<=15;k++)for(m=k+1;m<=15;m++)for(n=m+1;n<=15;n++){if(iden(i,j,k,m,n))printf("No %ld : %5d%5d%5d%5d%5d\\n",++count,i,j,k,m,n);if(...

相似回答