在为蓝桥杯比赛备考过程中,真正体验到自己编程能力的薄弱。在一次小练习中接触全排列这一算法。
基于对全排列的熟悉掌握,通过C语言代码实现数字1-9的全排列。当然也可以进行全排列的拓展。
//C语言实现数字1-9全排列
#include<stdio.h>
int m=9;
int count=0;
double s[9]={1,2,3,4,5,6,7,8,9};
void swap(double *a, double *b)
{
double t=*a;
*a=*b;
*b=t;
}
void qpl(int n)
{
if(n==8)
{
count++;
return;
}
for(int i=n;i<m;i++)
{
swap(&s[i],&s[n]);
qpl(n+1);
swap(&s[i],&s[n]);
}
}
main()
{
qpl(0);
printf("总数为:%d",count);
return 0;
}
通过C语言实现数学公式(a+b)/c+def/ghi=10
#include<stdio.h>
int m=9;
int count=0;
double s[9]={1,2,3,4,5,6,7,8,9};
void swap(double *a, double *b)
{
double t=*a;
*a=*b;
*b=t;
}
void qpl(int n)
{
if(n==8)
{
if(((s[0]+s[1])/s[2]+(s[3]*100+s[4]*10+s[5])/(s[6]*100+s[7]*10+s[8]))==10)
{
//(a+b)/c+def/ghi=10
for(int t=0;t<m;t++)
printf("%.0lf ",s[t]);
printf("\n");
count++;
return;}
}
for(int i=n;i<m;i++)
{
swap(&s[i],&s[n]);
qpl(n+1);
swap(&s[i],&s[n]);
}
}
main()
{
qpl(0);
printf("总数为:%d",count);
}