原题链接:https://vjudge.net/problem/UVA-11846
分类:回溯法
备注:模拟,水题

注意一下 不填字母的地方一定要是’.’,估计测试数据可能有填不满整个n*n块格子的情况。

#include<bits/stdc++.h>
using namespace std;
int n,k,num[25];
char g[25][25],ans[25][25];
inline char read(){char ch=getchar();while(ch==' '||ch=='\n')ch=getchar();return ch;
}
inline bool check(int x,int y,int w,int h){int cnt=0;for(int i=x;i<x+h;i++)for(int j=y;j<y+w;j++){if(isalpha(ans[i][j]))return false;if(isdigit(g[i][j])){cnt++; if(cnt>1)return false;if(g[i][j]-'0'!=w*h)return false;}}return cnt==1;
}
bool dfs(int pos,int now){if(now==k)return true;while(isalpha(ans[pos/n][pos%n]))pos++;for(int w=1;w<=9;w++)for(int h=1;h<=9;h++){if(w*h>9)continue;int x=pos/n,y=pos%n;if(x+h>n||y+w>n)break;if(check(x,y,w,h)){for(int i=x;i<x+h;i++)for(int j=y;j<y+w;j++)ans[i][j]='A'+now;if(dfs(pos+1,now+1))return true;else for(int i=x;i<x+h;i++)for(int j=y;j<y+w;j++)ans[i][j]='.';}}return false;
}
int main(void){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);while(~scanf("%d %d",&n,&k)&&n){int cnt=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){g[i][j]=read(); ans[i][j]='.';}dfs(0,0);for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%c",ans[i][j]);printf("\n");}}return 0;
}

习题 7-16 找座位(Finding Seats Again, UVa11846)相关推荐

  1. 2016年东莞市程序设计竞赛镇区选拔赛上机试题小学组:seat(找座位)

    找座位 (seat.pas/c/cpp) [问题描述] 乐乐乘坐公交顺利到达学校,颁奖活动在体育馆举行.这次的座位比较特殊,是按环形从外到内排列的,如下图是20位学生安排在4行×5列的座位上的排列情况 ...

  2. ZZULIOJ-1525-小P找座位

    问题 I: 小P找座位 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 终于到达考场的小P忘了自己坐在那里 ...

  3. 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。

    C++程序设计(第三版) 谭浩强 习题5.7 个人设计 习题 5.7 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点). 代码块: #include <io ...

  4. 新手坐高铁怎么找车厢_第一次坐高铁怎么找座位啊

    展开全部 我们e5a48de588b662616964757a686964616f31333365663462先要找到自己的车厢号并上车,然后找座位的话,车厢内两侧都有标出来,一般一排六个,a车窗,c ...

  5. 习题 6.16 输入一个字符串,内有数字和非数字字符,例如: a123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一数组a中。

    习题 6.16 输入一个字符串,内有数字和非数字字符,例如: a123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一数组a中.例如,123存入在a[0],456 ...

  6. 小甲鱼python课后习题【16,17,18,19,20】

    [学习笔记,仅供学习交流使用,知识源于鱼c论坛] 作业16: 测试题: 0.我们根据列表.元祖和字符串的共同特点,把它们三统称为什么? 序列   1)都可以通过索引得到每一个元素   2)默认索引值总 ...

  7. 【Python习题】判断火车票座位(保姆级图文+实现代码)

    目录 题目 思路 代码 实现效果 总结 主要内容是校设课程的习题和课外学习的一些习题. 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Python习题』 系列,持续更新中 题目 类型: ...

  8. 无穷级数求和7个公式_考研数学闭关修炼习题讲解(16)无穷级数 附(6)补充解释

    假期鸽了很久,今天我要分享的是无穷级数,数一的专场. 今天的内容一共有9题,一起加油吧! [1] 本题考查无穷级数的判敛.本题用到的是通过放缩(比较判别法)直接判断敛散性,属于简单题,把后面的sin放 ...

  9. UVA - 11846 Finding Seats Again (DFS搜索对象)

    题意:有一个n*n(n<20)的座位矩阵里坐着k(k26)个研究小组.每个小组的座位都是矩形形状.输入每个小组组长的位置和该组的成员个数,找到一种可能的座位方案. 分析:方法肯定是用dfs,但根 ...

最新文章

  1. 微软副总裁、Kubernetes 头号贡献者的他,给云原生带来奇迹!
  2. JQuery:DOM操作
  3. Java8 Stream详解~排序:sorted
  4. access数据库文件导入mysql数据库文件怎么打开,Access数据库从外部数据导入文本文件和VF数据库-dbf文件怎么打开...
  5. php的 静态变量,PHP之static静态变量详解
  6. win10 免安装版本的MySQL的下载安装和配置
  7. C#字典转换成where条件
  8. [WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx
  9. code flattening —— conversion to R1CS——formulation of QAP
  10. php小程序中的页面如何换行,解决微信小程序scroll-view换行问题
  11. 全基因组测序 从头测序(de novo sequencing) 重测序(re-sequencing)
  12. 大球吞小球html5游戏在线玩,大球吃小球大作战
  13. Python 中的Numpy函数
  14. 华为OSPF多区域理论,路由重分发,末梢区域和完全末梢区域的优化,NSSA区域的优化
  15. 学生个人网页模板 学生个人网页设计作品 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做
  16. PairProject 总结
  17. solidity合约访问其他合约的mapping
  18. 有哪些好的科研习惯?
  19. 高效率视频播放: 如何使用3D API 进行视频的高质量回放(1)
  20. Android 传感器之方向传感器

热门文章

  1. 补码加减运算及判断溢出方法
  2. naoqi 机器人总结17
  3. 如何将小米画报中漂亮的壁纸保存下来?
  4. fabric QA
  5. Activiti 简单demo (2)
  6. 零基础学Java语言---编程题
  7. 数据分析 时间序列分析 概述
  8. Java中环境变量的设置
  9. CSDN高校俱乐部招募公告
  10. 微分,泰勒公式及其在图像处理中的应用