UVA232字符串处理
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; int rr,cc;
char s[][];
int num[][];
bool border(int x,int y){
if(x>=&&x<rr&&y>=&&y<cc) return true;
return false;
}
int Move[][]={{,-},{-,}};
bool check(int x,int y){
if(s[x][y]=='*') return false;
for(int i=;i<;++i){
int tx=x+Move[i][];
int ty=y+Move[i][];
if(!border(tx,ty)) return true;
if(s[tx][ty]=='*') return true;
}
return false;
}
char b[][];
char c[][];
char temp[];
int B[],C[];
int main(){
int cas=;
while(scanf("%d",&rr),rr){
memset(num,,sizeof(num));
if(cas) printf("\n");
scanf("%d",&cc);
int i,j,y=;
for(i=;i<rr;++i){
scanf("%s",s[i]);
}
for(i=;i<rr;++i){
for(j=;j<cc;++j){
if(check(i,j)){
num[i][j]=++y;
}
}
}
int p=,q=;
for(i=;i<rr;++i){
int k=;
for(j=;j<cc;++j){
// printf("s%d%d:%c check:%d\n",i,j,s[i][j],check(i,j));
if(num[i][j]){
b[p][k++]=s[i][j];
if(k==) B[p]=num[i][j];
int t=j+;
while(t<cc&&s[i][t]!='*'){
b[p][k++]=s[i][t];
t++;
}
b[p][k]='\0';
p++;k=;
j=t;
}
}
}
for(j=;j<cc;++j){
int k=;
for(i=;i<rr;++i){
if(num[i][j]){
c[q][k++]=s[i][j];
if(k==) C[q]=num[i][j];
int t=i+;
while(t<rr&&s[t][j]!='*'){
c[q][k++]=s[t][j];
t++;
}
c[q][k]='\0';
q++;k=;
i=t;
}
}
}
printf("puzzle #%d:\n",++cas);
printf("Across\n");
for(i=;i<p;++i){
printf("%3d.%s\n",B[i],b[i]);
}
printf("Down\n");
for(i=;i<q;++i){
for(j=;j<q-;++j){
if(C[j+]<C[j]){
swap(C[j+],C[j]);
int cnt=;
int len1=strlen(c[j]);
int len2=strlen(c[j+]);
for(p=;p<len1;++p){
temp[cnt++]=c[j][p];
}
temp[cnt]='\0';
cnt=;
for(p=;p<len2;++p){
c[j][cnt++]=c[j+][p];
}
c[j][cnt]='\0';
cnt=;
for(p=;p<len1;++p){
c[j+][cnt++]=temp[p];
}
c[j+][cnt]='\0';
}
}
}
for(i=;i<q;++i){
printf("%3d.%s\n",C[i],c[i]);
}
}
return ;
}
这个题有几个点需要注意。。第一。。字符串以'\0'结尾。。不要开小数组。。
第二对齐输出格式。。仔细对照会发现是%3d
while循环里面t忘记++
down list的word的含义理解错误。。标号仍然用第一次标的
down list需要从小到大输出。。我冒泡了一下。。
存储标号的num数组每次都要memset
记录完,k要记得归零
两个output之间要有一个空行。。
最后的output后面没有空行
小心数组越界。。
如果数据非常大。。并且。。单个字母是一个输出。。
那么我们b[20][20]显然不够。。
肯定要大于20的。。c数组也是。。。这个题主要错在了考察
这个地方。。
我们也可以边找边输出。。
但是c数组怎么处理呢。。。
UVA232字符串处理的更多相关文章
- [刷题]算法竞赛入门经典 3-4/UVa455 3-5/UVa227 3-6/UVa232
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa455:Periodic Strings 代码: //UVa455 #inclu ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- JavaScript 字符串实用常操纪要
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Redis的简单动态字符串实现
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...
- ASP.NET加密和解密数据库连接字符串
大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...
- Javascript正则对象方法与字符串正则方法总结
正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...
随机推荐
- Linux集群配置ntp时间同步服务
集群中时间不同步有可能会让大数据的应用程序运行混乱,造成不可预知的问题,比如Hbase,当时间差别过大时就会挂掉,所以在大数据集群中,ntp服务,应该作为一种基础的服务,以下在演示在CentOS 7. ...
- 利用FFmpeg生成视频的缩略视频 v8.3
目前生成视频缩略图的工具大多数是生成静态的图片,为了解决这样的局限性,这 次春节期间搞了个利用 FFMpeg 能生成缩略动态视频的批处理. 把 Make_NxM_videos.bat LED_font ...
- hihocoder 1061.Beautiful String
题目链接:http://hihocoder.com/problemset/problem/1061 题目意思:给出一个不超过10MB长度的字符串,判断是否里面含有一个beautiful strings ...
- 如何让VS2013编写的程序
总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...
- 25个增强iOS应用程序性能的提示和技巧(高级篇)(2)
25个增强iOS应用程序性能的提示和技巧(高级篇)(2) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...
- cf378C(模拟)
题目链接:http://codeforces.com/contest/733/problem/C 思路:模拟 因为数组b里的元素是顺序对应a数组元素的和,可以开个c数组储存b数组元素对应的a数组元素区 ...
- Velocity笔记
- AngularJS XMLHttpRequest $http服务
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 读取JSON文件 以下是存储在web服务器上的 JSON 文件: http://www.runoob.com/try/ ...
- 三、jQuery--jQuery基础--jQuery基础课程--第8章 jQuery 实现Ajax应用
1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:load(url,[data],[callback]) ...
- 个推+DCLOUD,推送消息和透传消息
DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...