洛谷 P1784 数独

题目传送门

解题思路:

跟八皇后很相似,区别在于本题不用记录斜线,但是要记录每个宫格,在每个位置上都要填数.

AC代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstdlib>
 4 
 5 using namespace std;
 6 
 7 int a[10][10];
 8 bool h[10][10],l[10][10],g[10][10]; 
 9 
10 inline void print() {
11     for(int i = 1;i <= 9; i++) {
12         for(int j = 1;j <= 9; j++)
13             printf("%d ",a[i][j]);
14         printf("\n");
15     }
16     exit(0);
17 }
18 
19 inline void dfs(int x,int y) {
20     if(a[x][y] != 0) {
21         if(x == 9 && y == 9)
22             print();
23         else
24             if(y == 9) 
25                 dfs(x + 1,1);
26             else 
27                 dfs(x,y + 1);
28     }
29     if(a[x][y] == 0) {
30         for(int i = 1;i <= 9; i++) {
31             if(!h[i][x] && !l[i][y] && !g[i][(x-1)/3*3+(y-1)/3+1]) {
32                 a[x][y] = i;
33                 h[i][x] = 1;
34                 l[i][y] = 1;
35                 g[i][(x-1)/3*3+(y-1)/3+1] = 1;
36                 if(x == 9 && y == 9)
37                     print();
38                 if(y == 9)
39                     dfs(x + 1,1);
40                 else
41                     dfs(x,y + 1);
42                 a[x][y] = 0;
43                 h[i][x] = 0;
44                 l[i][y] = 0;
45                 g[i][(x-1)/3*3+(y-1)/3+1] = 0;
46             }
47         }
48     }
49 }
50 
51 int main()
52 {
53     for(int i = 1;i <= 9; i++)
54         for(int j = 1;j <= 9; j++){ 
55             scanf("%d",&a[i][j]);
56             h[a[i][j]][i] = l[a[i][j]][j] = g[a[i][j]][(i-1)/3*3+(j-1)/3+1] = 1;
57         } 
58     dfs(1,1);
59     return 0;
60 }

 

转载于:https://www.cnblogs.com/lipeiyi520/p/11354841.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 洛谷c是一个在洛谷平台上运行的控制台小游戏。在洛谷c里,玩家可以体验到纯粹的命令行游戏的乐趣。 洛谷c提供了丰富多样的游戏选择,包括迷宫、扫雷、数独等经典游戏。玩家可以通过键盘输入命令与游戏进行交互,通过编写c语言代码来完成各种游戏任务。 在洛谷c中,玩家可以锻炼自己的逻辑思考和编程能力。比如,在迷宫游戏中,玩家需要编写代码来实现自动寻找出口的功能;在扫雷游戏中,玩家需要编写代码来实现揭开方块、计算周围雷数等功能。 洛谷c还提供了竞赛模式,玩家可以参加各种比赛,与其他玩家切磋编程技巧。通过比赛,玩家可以学习到其他程序员的优秀代码,不断提升自己的编程水平。 洛谷c也提供了交流和学习的平台,玩家可以与其他玩家交流游戏心得、学习经验,共同进步。在洛谷c的论坛中,玩家可以提问问题、分享代码,获得其他玩家的帮助和指导。 总之,洛谷c是一个有趣并且有教育价值的控制台小游戏。通过游戏,玩家能够提高编程能力,锻炼逻辑思维,在与其他玩家的交流中不断学习和成长。 ### 回答2: 洛谷c是一个控制台小游戏,它是一个基于C语言编写的游戏平台。这个平台提供了各种类型的游戏,如迷宫游戏、飞行游戏、射击游戏等等。洛谷c的游戏都是在控制台下运行的,没有图形界面,所有的操作都是通过键盘输入和控制台输出来完成。 在洛谷c中,你可以通过学习C语言来编写自己的小游戏,也可以玩其他用户编写的游戏。这是一个很好的学习C语言的平台,通过编写小游戏可以锻炼自己的编程能力和逻辑思维。 洛谷c的游戏很有趣,而且有很多挑战性的关卡。你可以在游戏中探索各种各样的场景,解决难题,战胜敌人。游戏的难度逐渐增加,所以你需要不断提升自己的能力才能通关。 另外,洛谷c还有一个活跃的社区,你可以在社区中与其他玩家交流,分享自己的作品和经验。这样可以帮助你更好地理解游戏中的问题,并且找到解决问题的方法。 总之,洛谷c是一个可以让你学习C语言、锻炼编程能力和享受游戏乐趣的平台。无论你是初学者还是有一定编程经验的人,都可以在这里找到适合自己的游戏和挑战。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值