POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)
题目链接:
http://poj.org/problem?id=3923
题意描述:
输入一个n*m的屏幕
该屏幕内有至少一个对话框(每个对话框都有对应的字母表示)
判断并输出该屏幕内处于最表层的对话框是哪些(有多个的话按字典序)
解题思路:
很接近生活的一道模拟题,考察了思维的缜密性,尤其是出现嵌套情况时,应该输出里层的对话框编号即可。
AC代码:
#include<stdio.h> #include<string.h> #include<ctype.h> char map[110][110]; int istop(int sx,int sy,char x); //判断是否为表层对话框函数 int main() {int n,m,i,j,list[26],k,c;while(scanf("%d%d",&n,&m),n+m != 0){memset(list,0,sizeof(list));for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf(" %c",&map[i][j]);if(isalpha(map[i][j]))list[map[i][j]-'A']=1;//标记有哪些字母标号的对话框出现 }}for(i=0;i<26;i++){if(list[i]){for(j=1;j<=n;j++){int flag=0;for(k=1;k<=m;k++){if(map[j][k]-'A'==i){list[i]=istop(j,k,map[j][k]);flag=1;break;}}if(flag)break;}}}for(i=0;i<26;i++){if(list[i])printf("%c",'A'+i);}printf("\n"); }return 0; } int istop(int sx,int sy,char x) {int i,j,r,c;i=sx;j=sy+1;while(map[i][j] == x)j++;j--;c=j;//记录该对话框的列数 if(map[i+1][j] != x)return 0;while(map[i][j] == x)i++; i--;r=i;//记录该对话框的行数 if(map[i][j-1]!=x)return 0;while(map[i][j] == x)j--; j++;if(map[i-1][j]!=x)return 0;while(map[i][j] == x)i--; i++;if(i!=sx &&j!=sy)return 0;for(i=sx+1;i<r;i++)//判断该对话框内是否有嵌套对话框 for(j=sy+1;j<c;j++)if(map[i][j]!='.')return 0;return 1; }
1 #include<stdio.h> 2 #include<string.h> 3 #include<ctype.h> 4 char map[110][110]; 5 int istop(int sx,int sy,char x); 6 int main() 7 { 8 int n,m,i,j,list[26],k,c; 9 while(scanf("%d%d",&n,&m),n+m != 0) 10 { 11 memset(list,0,sizeof(list)); 12 for(i=1;i<=n;i++) 13 { 14 for(j=1;j<=m;j++) 15 { 16 scanf(" %c",&map[i][j]); 17 if(isalpha(map[i][j])) 18 list[map[i][j]-'A']=1; 19 } 20 } 21 for(i=0;i<26;i++) 22 { 23 if(list[i]) 24 { 25 for(j=1;j<=n;j++) 26 { 27 int flag=0; 28 for(k=1;k<=m;k++) 29 { 30 if(map[j][k]-'A'==i) 31 { 32 list[i]=istop(j,k,map[j][k]); 33 flag=1; 34 break; 35 } 36 } 37 if(flag) 38 break; 39 } 40 } 41 } 42 for(i=0;i<26;i++) 43 { 44 if(list[i]) 45 printf("%c",'A'+i); 46 } 47 printf("\n"); 48 } 49 return 0; 50 } 51 int istop(int sx,int sy,char x) 52 { 53 int i,j,r,c; 54 i=sx; 55 j=sy+1; 56 while(map[i][j] == x) 57 j++; 58 j--; 59 c=j; 60 if(map[i+1][j] != x) 61 return 0; 62 63 while(map[i][j] == x) 64 i++; 65 i--; 66 r=i; 67 if(map[i][j-1]!=x) 68 return 0; 69 70 while(map[i][j] == x) 71 j--; 72 j++; 73 if(map[i-1][j]!=x) 74 return 0; 75 76 while(map[i][j] == x) 77 i--; 78 i++; 79 if(i!=sx &&j!=sy) 80 return 0; 81 82 for(i=sx+1;i<r;i++) 83 for(j=sy+1;j<c;j++) 84 if(map[i][j]!='.') 85 return 0; 86
转载于:https://www.cnblogs.com/wenzhixin/p/7622848.html
POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)相关推荐
- 程序设计思维与实践月模拟题X3
这里写目录标题 201604-3 路径解析 题目 思路 代码 201609-3 炉石传说 题目 思路 代码 201809-3 元素选择器 题目 思路 代码 201604-3 路径解析 题目 在操作系统 ...
- 程序设计思维与实践 月模拟题3 Blog
CSP-201609-3炉石传说 题目具体描述不再粘贴,如有需要可参照CSP模拟考试网址. CSP模拟考试网址 题目分析 首先构建结构体role用来保存英雄/随从,包含生命值和攻击力两个变量,这样两名 ...
- 动态获取某个元素的高度_codeforces 1443D,解法简单,思维缜密的动态规划问题...
大家好,欢迎来到codeforces专题. 今天选择的问题是1443场次的D题,这题是全场倒数第三题,截止到现在一共通过了2800余人.这题的思路不算难,但是思考过程非常有趣,这也是这一期选择它的原因 ...
- 为什么有的人思维缜密,滴水不漏,逻辑通透?
要做到思维缜密,逻辑严谨,可以学习使用"MECE法则"! MECE法则,是麦肯锡公司的巴巴拉·明托(Barbara Minto)在<金字塔原理>(The Minto P ...
- 如何成长为一名思维缜密的产品经理
转自 http://buluo.qq.com/p/detail.html?bid=257529&pid=6899262-1445322100 毋庸置疑,产品新人和产品老鸟之间普遍有着很大的差距 ...
- 山东大学程序设计思维与实践 四月模拟:TT与可怜的猫
4月模拟-TT与可怜的猫 程序设计思维实践-复杂模拟题训练2 山东大学计算机科学与技术学院程序设计思维与实践 sdu程序设计思维与实践 山东大学程序设计思维实践作业 山大程序设计思维实践 山东大学程序 ...
- POJ 3030 Nasty Hacks (模拟题)
题目:http://poj.org/problem?id=3030 思路:模拟题 #include <iostream>using namespace std;int main() {in ...
- java语言与www技术形成性考核册_电大Java语言与WWW技术形成性考核程序题
电大JAVA语言与WWW技术形成性考核程序题一.写出下列程序完成的功能1.PUBLICCLASSSUM{PUBLICSTATICVOIDMAINSTRINGARGS{INTSUM0FORINTI1IM ...
- bigdecimal比较大小的方法_【初中数学思维训练】第7题——比较大小的常用方法...
1 前言 老朋友可以略去前言,直奔第2部分--正文部分 本专题以新课程标准的初中数学知识为网络,以初中数学题的一题多解为主线,以解题后的反思为枢纽,试图全面系统地培养.训练中学生的发散思维能力.综合解 ...
最新文章
- 如何完全安装mysql数据库_数据库经验:如何简单安装MySQL数据库
- iOS5.1 + XCode4.5 device debug,the screen will ...
- View 4桌面虚拟化炙手可热 但未熟透
- iOS - 数据的归档和反归档
- centos7离线安装tengine所需依赖
- 协方差、相关系数---通俗解释
- FMDB/SQLCipher数据库管理
- http --- 公开密钥加密(非对称加密)的几个概念
- 解决linux下QtCreator无法输入中文的情况
- java四个基本步骤_javac编译的四个主要的流程
- 渐变色彩艺术海报背景素材|感官刺激、个性突出
- SQLServer:执行计划
- Android Studio的TableLayout的使用(自定义列拉伸,收缩,隐藏,横跨列)
- 无线通信与生活-(1)
- 手机内存卡大小的计算
- MTK Combo Chip常用调试命令
- k8s 部署 owncloud
- php利用PDO对数据库的操作练习
- Element表格之表头合并、行合并和列合并
- 计算机组成原理:简单页表和多级页表(虚拟内存的映射)
热门文章
- 锁定10月10日,九州云Animbus7.0与你不见不散
- 手机短视频怎么去水印 百家号视频消重技术
- java实现宠物主人登录_JavaOO综合练习题目 -- 宠物管理系统
- 学习笔记Day01——Linux基础1——简介及网络基础
- 从江苏到广东到湖北,ET工业大脑正在改变着中国工业制造业
- Learning from Imbalanced Data 翻译和阅读笔记
- 【新书推荐】【2021】超大规模集成电路、通信和信号处理进展:VCAS 2019精选会议录
- 国行三星Note3已开始推送安卓4.4.2更新
- opencv--python(一)图像和视频处理之读取,显示和保存
- 分布式事务(三)、柔性事务之 TCC、Saga、本地消息表、事务消息、最大努力通知