z0j1008Gnome Tetravex

该题是找满足条件的摆法,直接DFS会超时,关键是压缩存储,同一种正方形只存一次,再DFS,然后搜到一种成功的就要退出,不要把所有可能的摆法都搜完,不然也会超时。初始化种类数不要忘记。

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 bool flag ;  //成功标志
 4 int n,kinds;  //正方形的个数为n*n,种类为kinds
 5 struct square
 6 {
 7     int top,bottom,left,right;
 8     int num;  //该类正方行的个数
 9 } rect[26];//记录每个正方形的状况
10 int map[26] ;//正方形的摆法
11 //铺第x个正方形
12 void dfs(int x)
13 {
14     int i; // 循环变量
15     if(x == n*n)  //成功标志
16     {
17         flag = true ;
18         return ;
19     }
20     if(flag)         return ;    //已找到一种正确的摆法,停止搜索,重要
21     for(i=0 ; i < kinds; i++)
22     {
23         if((rect[i].num != 0) &&   //判断是否可以摆这类正方形
24                 (x%n == 0 || rect[i].left == rect[map[x-1]].right)&&
25                 (x/n == 0 ||rect[i].top == rect[map[x-n]].bottom) )
26         {
27             rect[i].num--;  //可以,用掉正方形一个
28             map[x]= i;
29             dfs(x+1);
30             rect[i].num++;  //未成功,换下一种,正方形数量加回来
31         }
32     }
33 }
34 int main()
35 {
36 //    freopen("in.cpp","r",stdin);
37     int i,k;
38     bool showed;  //标记是否出现新类型的正方形
39     int ser = 0; //序列号
40     struct square temp; //读正方形
41        temp.num = 1;
42     while(true)
43     {
44         kinds = 0;  //初始化,重要
45         flag = false;
46         scanf("%d",&n);
47         if(n == 0 ) break;
48         ser++;
49         if(ser > 1)  puts("");
50         for(i = 0; i < n*n; i++)
51         {
52             scanf("%d%d%d%d",&temp.top,
53                   &temp.right,&temp.bottom,&temp.left);
54             showed = true;
55             for(k = 0; k < kinds; k++)
56             {
57                 if(rect[k].bottom== temp.bottom
58                    &&rect[k].top == temp.top
59                    &&rect[k].left == temp.left
60                    &&rect[k].right == temp.right)
61                 {
62                     showed = false;  //未出现新类型
63                     rect[k].num++;
64                     break;
65                 }
66             }
67             if(showed)//出现新类型
68             {
69                 rect[kinds] = temp;
70                 kinds++;
71             }
72         }
73         dfs(0);//从第0个铺起
74         if(flag == true)
75             printf("Game %d: Possible\n",ser);
76         else
77             printf("Game %d: Impossible\n",ser );
78     }
79     return 0;
80 }

 

转载于:https://www.cnblogs.com/allh123/archive/2013/03/15/2961762.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值