蓝桥杯模拟题5 九宫格(暴力求解)





要么暴力,  要么简单dfs搜索

答案(72);

暴力时间长点

#include<stdio.h>

int main()
{
	int sum=0;
	int q,w,e,r,t,y,u,i,o;
	for(q=1;q<=9;q++)
		for(w=1;w<=9;w++)
			for(e=1;e<=9;e++)
				for(r=1;r<=9;r++)
					for(t=1;t<=9;t++)
						for(y=1;y<=9;y++)
							for(u=1;u<=9;u++)
								for(i=1;i<=9;i++)
									for(o=1;o<=9;o++)
									{
										if(q!=w&&q!=e&&q!=r&&q!=t&&q!=y&&q!=u&&q!=i&&q!=o)
										{
											if(w!=e&&w!=r&&w!=t&&w!=y&&w!=u&&w!=i&&w!=o)
											{
												if(e!=r&&e!=t&&e!=y&&e!=u&&e!=i&&e!=o)
												{
													if(r!=t&&r!=y&&r!=u&&r!=i&&r!=o)
													{
														if(t!=y&&t!=u&&t!=i&&t!=o)
														{
															if(y!=u&&y!=i&&y!=o)
															{
																if(u!=i&&u!=o&&i!=o)
																{		
																	if(q+w+e==r+t+y&&r+t+y==u+i+o&&q+r+u==w+t+i&&w+t+i==e+y+o)
																		sum++;
																}	
															}
														}
													}
												}
											}
										}
									}
									
									
	printf("%d\n",sum);
										
} 

dfs简单搜索

#include<stdio.h>

int sum=0;
int vis[10];
int a[9];
void dfs(int x)
{
	if(x==9)
	{
		int c1=a[0]+a[1]+a[2];
		int c2=a[3]+a[4]+a[5];
		int c3=a[6]+a[7]+a[8];
		int l1=a[0]+a[3]+a[6];
		int l2=a[1]+a[4]+a[7];
		int l3=a[2]+a[5]+a[8];
		if(c1==c2&&c2==c3&&l1==l2&&l2==l3)
		{
			sum++;
		}
	}
	else
	{
		for(int i=1;i<=9;i++)
		{
			if(!vis[i])
			{
				a[x]=i;
				vis[i]=1;
				dfs(x+1);
				a[x]=0;
				vis[i]=0;
			}

		}
	}
}
int main()
{	
	dfs(0);
	printf("%d\n",sum);	
	return 0;
} 


转载于:https://www.cnblogs.com/sizaif/p/9078578.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值