**全排列实现数字1-9排序**

在为蓝桥杯比赛备考过程中,真正体验到自己编程能力的薄弱。在一次小练习中接触全排列这一算法。
基于对全排列的熟悉掌握,通过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);
}
发布了3 篇原创文章 · 获赞 3 · 访问量 124

猜你喜欢

转载自blog.csdn.net/weixin_44034837/article/details/103687445