题目链接

省赛热身赛C题,当时还不会DFS。。。我是直接暴力枚举了9个点,加上个小剪枝,去判重复的操作很重要。。。我在DFS中开一个数组记录在这一层是否搜过这个数。开始忘加Case , 2Y。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int p[10],o[10],k[10],z;
 4 void dfs(int x)
 5 {
 6     int sum,sum1,i,j,a;
 7     int q[10],w;
 8     if(x > 9)
 9     {
10         sum = k[1] + k[2] + k[3];
11         sum1 = k[1] + k[4] + k[7];
12         if(sum == (k[4] + k[5] + k[6])&&sum == (k[7] + k[8] + k[9]))
13         {
14             if(sum1 == k[2]+k[5]+k[8]&&sum1 == k[3]+k[6]+k[9])
15                 z ++;
16             else
17                 return;
18         }
19         return ;
20     }
21     if(x > 7)
22     {
23         sum = k[1] + k[2] + k[3];
24         if(sum != (k[4] + k[5] + k[6]))
25         return ;
26     }
27     if(x == 9)
28     {
29         sum1 = k[1] + k[4] + k[7];
30         if(sum1 != k[2]+k[5]+k[8])
31         return ;
32     }
33     j = 1;
34     for(i = 1; i <= 9; i ++)
35     {
36         w = 1;
37         for(a = 1;a <= j-1;a ++)
38         {
39             if(q[a] == p[i])
40             {
41                 w = 0;
42                 break;
43             }
44         }
45         if(!o[i]&&w)
46         {
47             q[j] = p[i];
48             j ++;
49             k[x] = p[i];
50             o[i] = 1;
51             dfs(x+1);
52             o[i] = 0;
53         }
54     }
55 }
56 int main()
57 {
58     int i,t,num = 0;
59     scanf("%d",&t);
60     while(t--)
61     {
62         z = 0;
63         num ++;
64         memset(o,0,sizeof(o));
65         memset(k,0,sizeof(k));
66         for(i = 1; i <= 9; i ++)
67             scanf("%d",&p[i]);
68         dfs(1);
69         printf("Case %d: ",num);
70         printf("%d\n",z);
71     }
72     return 0;
73 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/07/17/2594566.html

SDUT 2405 Strange Square(DFS)相关推荐

  1. sdut 3361迷宫探索dfs

    Problem Description 有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关:请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input ...

  2. HDU-1518 Square dfs+剪枝

    该题问给定的棍子能否组成一个正方形.首先我们要判定是否总长度是4的倍数,然后再决定是否存在某条边大于组合边长. 搜索的过程中也是可以进行剪枝了. 首先将边排序,我们可以假定所有的组合边由大小递减的边组 ...

  3. CodeForces - 962C Make a Square (dfs)

    水题 深搜即可 但要注意前导0的问题 #include<stdio.h> #include<stdlib.h> #include<string.h> #includ ...

  4. 虚幻引擎 4.10 发布信息

    版本信息 SHARE: 该版本为虚幻引擎 4 带来数百项更新,包括由 GitHub 上的虚幻引擎开发人员社区提交的 53 项改进!感谢虚幻引擎 4.10 的所有贡献者: Andreas Axelsso ...

  5. 2362:Square 能否拼接为正方形 . DFS+回溯

    ///dfs时带返回值 回溯时与不带返回值的不一样,判断终止条件也不太一样 ///判断终止条件及终止条件应该有哪些变化时,只需举一个正确终止时的情况去判断 int visit[99999];int a ...

  6. 【HDU - 1518】Square (经典的dfs + 剪枝)

    题干: Given a set of sticks of various lengths, is it possible to join them end-to-end to form a squar ...

  7. SDUT 1157-小鼠迷宫问题(BFSamp;DFS)

    SDUT 1157-小鼠迷宫问题(BFS&DFS) 小鼠迷宫问题 Time Limit: 1500ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 小鼠 ...

  8. sdut 2107 DFS

    Problem Description 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出.遍历时,先遍历节点编号小的. Input 输入第一行为整数n(0 < n &l ...

  9. SDUT 1265-马停下过河卒(DFS)

    马拦过河卒 Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 棋盘上A点有一个过河卒,须要走到目标B点.卒行走的规则:可以向下. ...

最新文章

  1. Java中classpath配置
  2. mariadb编译安装流程
  3. python到底可以做什么-Python究竟是什么?能干嘛?
  4. [Java]jdbc[转]
  5. css样式全大写,用css样式表实现首字大写
  6. 视频移动侦测VMD的实现
  7. 网络共享服务器 samba
  8. OpenSuSE 网络配置
  9. DEDECMS 另类***
  10. 虚拟机 安装 linux 分辨率 调整
  11. LNMP环境下搭建wordpress
  12. vue.js提示Vue is not a constructor或Vue.createApp is not a function解决方法
  13. CSAPP实验记录(二)Bomb Lab
  14. [转]移动IIS7.5默认inetpub目录_se7en3_新浪博客
  15. cgb2108-day02
  16. 硬件篇——阻容一阶滤波电路
  17. 李宏毅language课程Speach Recongition
  18. 2021美赛B题翻译
  19. 三角形顺时针和逆时针的判定
  20. java +Selenium 2 环境搭建

热门文章

  1. java主线程和子线程区别_主线程异常– Java
  2. 如何在Linux(Ubuntu)上安装Maven
  3. Java进阶必备,人人都能听懂的JVM
  4. Python入门必备,Python零基础入门
  5. linux修改文件的权限和修改文件所有者和所属组
  6. Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口
  7. ABP:在多语句事务内不允许使用 CREATE DATABASE 语句
  8. LINUX下的LVM逻辑卷管理器
  9. Jquery事件委托之Safari
  10. Java | 原来 try 还可以这样用啊?!