1332: [蓝桥杯2017初赛]算式900 【简单】 有点意思

在这里插入图片描述
http://oj.ecustacm.cn/problem.php?id=1332

最简单的方法: 直接暴力

#include<cstdio>
int main(void)
{
    
    
	int a[10];
	int n;
	int sum1,sum2;
	for(a[0]=0;a[0]<=9;a[0]++)
	{
    
    
		for(a[1]=0;a[1]<=9;a[1]++)
		{
    
    
			for(a[2]=0;a[2]<=9;a[2]++)
			{
    
    
				for(a[3]=0;a[3]<=9;a[3]++)
				{
    
    
					for(a[4]=0;a[4]<=9;a[4]++)
					{
    
    
						for(a[5]=0;a[5]<=9;a[5]++)
						{
    
    
							for(a[6]=0;a[6]<=9;a[6]++)
							{
    
    
								for(a[7]=0;a[7]<=9;a[7]++)
								{
    
    
									for(a[8]=0;a[8]<=9;a[8]++)
									{
    
    
										for(a[9]=0;a[9]<=9;a[9]++)
										{
    
    
											bool b[10]={
    
    false};
										    int n=0;
											for(int i=0;i<10;i++)
											{
    
    
												b[a[i]]=true;
											}
											for(int i=0;i<10;i++)
											{
    
    
												if(b[i]==true)
													n++;
											}
											if(n==10)
											{
    
    
												sum1=a[0]*1000+a[1]*100+a[2]*10+a[3];
												sum2=a[4]*1000+a[5]*100+a[6]*10+a[7];
												int sum3=sum1-sum2;
												if(sum3*(a[8]*10+a[9])==900)
												{
    
    
													printf("(%d%d%d%d-%d%d%d%d)*(%d%d)=900\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	return 0;
}

在这里插入图片描述上面的这种写法太冗杂了,那么来一个简单点的。
其实,本题是一个全排列问题。找出满足题目要求的排列就行了。
我们知道在库里有一个现成的求全排列的函数,直接调用就可以了。
这种方法的时间和代码量都比上面的优秀许多。

#include<cstdio>
#include<iostream>
#include<algorithm> 
using namespace std;
int main(void)
{
    
    
	int sum1;
	int sum2;
	int sum3;
	int a[10]={
    
    0,1,2,3,4,5,6,7,8,9};
	do
	{
    
    
		sum1=a[0]*1000+a[1]*100+a[2]*10+a[3];
		sum2=a[4]*1000+a[5]*100+a[6]*10+a[7];
		sum1=sum1-sum2;
		sum2=a[8]*10+a[9];
		if(sum1*sum2==900)
		{
    
    
			for(int i=0;i<10;i++)
			{
    
    
				printf("%d ",a[i]);
			}
			printf("\n");
		}
	}while(next_permutation(a,a+10));
	return 0;
} 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bettle_king/article/details/115240113