C语言:解决九宫格问题

题目:1~9这九个数字分布在九宫格上,要求三条纵线、三条横线和两条对角线都相等。利用C语言解出所有答案。

#include <stdio.h>

int main()
{
	unsigned char array[3][3] = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}};
	
	for(array[0][0] = 1; array[0][0] < 10; array[0][0]++)
	{
		for(array[0][1] = 1; array[0][1] < 10; array[0][1]++)
		{
			if(array[0][1] == array[0][0])
				continue;
			for(array[0][2] = 1; array[0][2] < 10; array[0][2]++)
			{	
				if(array[0][2] == array[0][0])
					continue;
				if(array[0][2] == array[0][1])
					continue;
				if((array[0][0] + array[0][1] + array[0][2]) != 15)
					continue;

				for(array[1][0] = 1; array[1][0] < 10; array[1][0]++)
				{
					if(array[1][0] == array[0][0])
						continue;
					if(array[1][0] == array[0][1])
						continue;					
					if(array[1][0] == array[0][2])
						continue;
					for(array[1][1] = 1; array[1][1] < 10; array[1][1]++)
					{
						if(array[1][1] == array[0][0])
							continue;
						if(array[1][1] == array[0][1])
							continue;					
						if(array[1][1] == array[0][2])
							continue;
						if(array[1][1] == array[1][0])
							continue;
						for(array[1][2] = 1; array[1][2] < 10; array[1][2]++)
						{
							if(array[1][2] == array[0][0])
								continue;
							if(array[1][2] == array[0][1])
								continue;					
							if(array[1][2] == array[0][2])
								continue;
							if(array[1][2] == array[1][0])
								continue;
							if(array[1][2] == array[1][1])
								continue;
							if((array[1][0] + array[1][1] + array[1][2]) != 15)
								continue;

							for(array[2][0] = 1; array[2][0] < 10; array[2][0]++)
							{
								if(array[2][0] == array[0][0])
									continue;
								if(array[2][0] == array[0][1])
									continue;					
								if(array[2][0] == array[0][2])
									continue;
								if(array[2][0] == array[1][0])
									continue;
								if(array[2][0] == array[1][1])
									continue;
								if(array[2][0] == array[1][2])
									continue;

								if((array[0][0] + array[1][0] + array[2][0]) != 15)
									continue;

								for(array[2][1] = 1; array[2][1] < 10; array[2][1]++)
								{
									if(array[2][1] == array[0][0])
										continue;
									if(array[2][1] == array[0][1])
										continue;					
									if(array[2][1] == array[0][2])
										continue;
									if(array[2][1] == array[1][0])
										continue;
									if(array[2][1] == array[1][1])
										continue;
									if(array[2][1] == array[1][2])
										continue;
									if(array[2][1] == array[2][0])
										continue;

									if((array[0][1] + array[1][1] + array[2][1]) != 15)
										continue;

									for(array[2][2] = 1; array[2][2] < 10; array[2][2]++)
									{
										if(array[2][2] == array[0][0])
											continue;
										if(array[2][2] == array[0][1])
											continue;					
										if(array[2][2] == array[0][2])
											continue;
										if(array[2][2] == array[1][0])
											continue;
										if(array[2][2] == array[1][1])
											continue;
										if(array[2][2] == array[1][2])
											continue;
										if(array[2][2] == array[2][0])
											continue;								
										if(array[2][2] == array[2][1])
											continue;	

										if((array[2][0] + array[2][1] + array[2][2]) != 15)
											continue;

										if((array[0][2] + array[1][2] + array[2][2]) != 15)
											continue;

										if((array[0][0] + array[1][1] + array[2][2]) != 15)
											continue;
										if((array[0][2] + array[1][1] + array[2][0]) != 15)
											continue;

										printf("%d %d %d\n", array[0][0], array[0][1],  array[0][2]);
										printf("%d %d %d\n", array[1][0], array[1][1],  array[1][2]);
										printf("%d %d %d\n", array[2][0], array[2][1],  array[2][2]);

										printf("\n");
									}									
								}	
							}
						}					
					}	
				}			
			}
		}	
	}
	getchar();
}

结果如下:

《C语言:解决九宫格问题》

 

    原文作者:九宫格问题
    原文地址: https://blog.csdn.net/xikangsoon/article/details/85320233
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞