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'; ...
随机推荐
- mount --bind 重启后失效的解决办法
vsftp不支持软链接,可以用mount来支持不同的目录结构 mount --bind /home/www/web/ROOT/img/upload /ftp/private/upload 重启后失效. ...
- iOS UIViewController 和 nib 相关的3个方法
iOS UIViewController 的 awakeFromNib 以及 - (id)initWithCoder:(NSCoder *)aDecoder 和 - (instancetype)ini ...
- linux日常小坑
一.权限 1.文件权限 改动文件权限和所有权的命令有如下两个: chmod -更改权限 chown -更改所有权 不过,只有用户是当前所有者或者根用户,才能实际更改文件的权限或所有权,这一点大家要注意 ...
- linux学习之lvm-逻辑卷管理器
一.简介 lvm即逻辑卷管理器(logical volume manager),它是linux环境下对磁盘分区进行管理的一种机制.lvm是建立在硬盘和分区之上的一个逻辑层,来提高分区管理的灵活性.它是 ...
- windows.h和winsock2.h包含顺序问题(转)
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...
- ACM/ICPC 之 并查集-食物链(POJ1182)
并查集的经典题型,POJ上题目还是中文= =,一般看到中文题都会感觉不太简单,这道题的数学归纳用得比较多,可以简化代码,挺有意思的. 同类型的题目还有POJ1703,比这个要简单,想了解并查集基本介绍 ...
- codeforces 449B Jzzhu and Cities (Dij+堆优化)
输入一个无向图<V,E> V<=1e5, E<=3e5 现在另外给k条边(u=1,v=s[k],w=y[k]) 问在不影响从结点1出发到所有结点的最短路的前提下,最多可以 ...
- ZipArchive和SSZipArchive使用详解
一.SSZipArchive 1.简介 SSZipArchive是iOS和Mac上一个简单实用的压缩和解压插件.用途包括:1.解压zip文件:2.解压密码保护的ZIP文件:3.创建新的zip文件:4. ...
- 20145213《Java程序设计》第五周学习总结
20145213<Java程序设计>第五周学习总结 教材学习内容总结 "素衣莫起风尘叹,犹及清明可到家."每每念此,不得不心疼自己.古人清明长假都进城耍了,还担心自己清 ...
- struts2截取字符串
<struts:if test="null!=pushAd&&pushAd.length()>14"> <struts:property v ...