POJ 3752
http://poj.org/problem?id=3752
这是一道我觉得还蛮有意思的题目,不难,是个水题,但我也TLE了几次,感到很奇怪,这么简单的循环还TLE,最后一想,肯定是有几个例子我是没有考虑到的
我觉得就是考你对循环的使用吧
代码写的有点长,有点琐碎
#include <stdio.h>
#include <iostream>
#include <string.h> using namespace std; char str[][]; bool mark[][]; int main()
{
int m,n,i,j;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(mark,false,sizeof(mark));
for(i=;i<=m;i++)
for(j=;j<=n;j++) //对需要存字母的地方进行初始化,因为我的判断退出的标志是它的四周都已经有了字母,而有字母则是false,想不通的就考虑2,2这一种情况
mark[i][j]=true;
for(i=;;)
{
str[][]='A';
mark[][]=false;
if(i==)
{
for(j=;j<=n&&mark[i][j];j++)
{
if(str[i][j-]=='Z') str[i][j]='A';
else str[i][j]=str[i][j-]+;
mark[i][j]=false;
}
i++;
j--;
if(i>m) break;
}
else
{
for(;i<=m&&mark[i][j];i++)
{
if(str[i-][j]=='Z') str[i][j]='A';
else str[i][j]=str[i-][j]+;
mark[i][j]=false;
}
i--;
if(!mark[i+][j]&&!mark[i-][j]&&!mark[i][j+]&&!mark[i][j-]) break;
for(j--;j>=&&mark[i][j];j--)
{
if(str[i][j+]=='Z') str[i][j]='A';
else str[i][j]=str[i][j+]+;
mark[i][j]=false;
}
j++;
if(!mark[i+][j]&&!mark[i-][j]&&!mark[i][j+]&&!mark[i][j-]) break;
for(i--;i>=&&mark[i][j];i--)
{
if(str[i+][j]=='Z') str[i][j]='A';
else str[i][j]=str[i+][j]+;
mark[i][j]=false;
}
i++;
if(!mark[i+][j]&&!mark[i-][j]&&!mark[i][j+]&&!mark[i][j-]) break;
for(j++;j<=n&&mark[i][j];j++)
{
if(str[i][j-]=='Z') str[i][j]='A';
else str[i][j]=str[i][j-]+;
mark[i][j]=false;
}
j--;
i++;
if(!mark[i+][j]&&!mark[i-][j]&&!mark[i][j+]&&!mark[i][j-]) break;
}
}
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
printf(" %c",str[i][j]);
printf("\n");
}
}
return ;
}
POJ 3752的更多相关文章
- POJ 3752 字母旋转游戏
问题描述: 给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充.例如,当M=5,N ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37427 Accepted: 16288 Descr ...
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
- POJ 2255. Tree Recovery
Tree Recovery Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11939 Accepted: 7493 De ...
- POJ 2752 Seek the Name, Seek the Fame [kmp]
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17898 Ac ...
随机推荐
- Lua 之string库
标准string库 基础字符串函数 string.len(s) 返回一个字符串的长度,例如 string.rep(s, n) 返回一个新的字符串,该字符串是参数s重复n次得到的结果,例如 )) -- ...
- MySQL分表自增ID解决方案(转)
当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中. 应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便. 在postgreSQ ...
- Yii2 使用 Joins 查询
Join() JOIN_TYPE = INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 等等 语法 $query = new ...
- PHPstorm设置连接FTP,进行文件上传、下载、比较
内容转载自:http://www.cnblogs.com/jikey/p/3486621.html 如何在 ...
- java从一个目录拷贝文件到另一个目录下
** * 复制单个文件 * @param oldPath String 原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt * ...
- oracle中的连接查询与合并查询总结
连接查询: 连接查询是指基于多张表或视图的查询.使用连接查询时,应指定有效的查询条件,不然可能会导致生成笛卡尔积.如现有部门表dept,员工表emp,以下查询因查询条件无效,而产生笛卡尔积: (各 ...
- 【活动】不用买书,不用花钱,可以免费看HTML5入门连载了
清华大学出版社推出的<HTML 5网页开发实例详解>适合HTML 5开发初学者和前端开发工程师.本书一经上市,就获得了读者的一致好评,为感谢读者,推出本书的连载活动. 本书术新颖.与时 ...
- HttpClient连接池的连接保持、超时和失效机制
HTTP是一种无连接的事务协议,底层使用的还是TCP,连接池复用的就是TCP连接,目的就是在一个TCP连接上进行多次的HTTP请求从而提高性能.每次HTTP请求结束的时候,HttpClient会判断连 ...
- C#之正则表达式、异常处理和委托与事件
正则表达式主要是为了处理和模式匹配复杂的字符串. int myInteger = 5; string intergerString = myInteger.ToString(); 就是将myInteg ...
- 【android-tips】如何在view中取得activity对象
(转载请注明出处:http://blog.csdn.net/buptgshengod) 今天想实现在view中返回上一个activity的功能,想了半天.因为在虽然view是包含于一个activity ...