求全排列1-9的一份思路 算法思路,
如题,想了两天了,没开始接触算法,在学校里只学了C的一点基础,望有大神想交此算法思路
2016-03-25 21:02
程序代码:#include <stdio.h>
//A(n,m),m<=n
int f(int n,int m)
{
int i,a=1,b=1;
//n!
for(i=1;i<=n;i++)
{
a*=i;
}
//(n-m)!
for(i=1;i<=n-m;i++)
{
b*=i;
}
return a/b; //n!/(n-m)!
}
int main()
{
int n=10,m=6;
printf("A(%d,%d)=%d\n",n,m,f(n,m));
return 0;
}

2016-03-25 21:17
2016-03-26 09:55
2016-03-26 10:22
2016-03-26 11:11
程序代码:#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>
int cd(int m[],int num1)
{
int k,l;
l=0;
if(num1==8){
printf("%d%d%d%d%d%d%d%d%d\n",m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],m[8]);
return 0;
}
else{
cd(m,num1+1);
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
l++;
if((num1+l)<=8){
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
cd(m,num1+1);
k=m[num1];
m[num1]=m[num1+l];
m[num1+l]=k;
}
return 0;
}
}
int main()
{
int j,num,i[9];
num=0;
for(j=0;j<9;j++)
i[j]=j+1;
cd(i,num);
}
[此贴子已经被作者于2016-4-19 04:20编辑过]

2016-04-19 03:31
程序代码:#include <stdio.h>
int _GetNext(int n[])
{
int i, j, tmp;
printf("%d%d%d%d%d%d%d%d%d\n", n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8]);
for(i=0; i<8; i++)
{
if (n[i] < n[i+1])
{
break;
}
}
if (i > 7)
{
return 0;
}
for (j=0; j<=i; j++)
{
if (n[j] < n[i+1])
{
tmp = n[j];
n[j] = n[i+1];
n[i+1] = tmp;
break;
}
}
for(j=0; j<=(i/2); j++)
{
tmp = n[j];
n[j] = n[i-j];
n[i-j] = tmp;
}
return 1;
}
int main()
{
int n[]={1,2,3,4,5,6,7,8,9};
while (_GetNext(n));
}
2016-04-19 23:41
2016-04-19 23:47
2016-04-23 15:12
2016-04-23 15:12