0 1 2 3 全排列 用C语言怎么编写 (用数组),详细点,谢谢
发布网友
发布时间:2022-10-12 04:04
我来回答
共3个回答
热心网友
时间:2023-10-17 21:54
//0 1 2 3 全排列
#include<stdio.h>
#include<conio.h>
int main()
{
int i,j,k,l;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
for(l=0;l<4;l++)
printf("%d%d%d%d ",i,j,k,l);
getch();
getch();
}
程序运行结果
还有,全排列就是把全部的可能写出来吗?
-物联网校企联盟技术部
热心网友
时间:2023-10-17 21:54
#include <stdio.h>
int n = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m)
{
int i;
if(k > m)
{
for(i = 0; i <= m; i++)
printf("%d ", list[i]);
printf("\n");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
int list[] = {1, 2, 3, 4, 5};
perm(list, 0, 4);
printf("total:%d\n", n);
return 0;
}
//http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html来自:求助得到的回答
热心网友
时间:2023-10-17 21:54
#include "stdio.h"
void Perm(int list[],int k,int m)
{
int temp;
if(k==m-1)
{
for(int i=0;i<m;i++)
{
printf("%d",list[i]);
}
printf("\t");
}
else
{
for(int i=k;i<m;i++)
{
temp=list[k];list[k]=list[i];list[i]=temp;
Perm(list,k+1,m);
temp=list[k];list[k]=list[i];list[i]=temp;
}
}
}
int main()
{
int list[]={0,1,2,3};
Perm(list,0,4);
}