#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字符串处理的更多相关文章

  1. [刷题]算法竞赛入门经典 3-4/UVa455 3-5/UVa227 3-6/UVa232

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa455:Periodic Strings 代码: //UVa455 #inclu ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

    之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...

  4. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  5. JavaScript 字符串实用常操纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  6. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  7. Redis的简单动态字符串实现

    Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...

  8. ASP.NET加密和解密数据库连接字符串

    大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...

  9. Javascript正则对象方法与字符串正则方法总结

    正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...

随机推荐

  1. form、iframe实现异步上传文件

    转载自:http://blog.csdn.net/sunjing21/article/details/4779321 实现主要功能: 页面提供一个上传图片的input file选择框,用于上传某一类型 ...

  2. 引入Fresco

    这里告诉你如何在项目中引入 Fresco. 使用 Android Studio 或者其他 Gradle 构建的项目 编辑 build.gradle 文件: 1 2 3 4 dependencies { ...

  3. 【leetcode】 Longest Valid Parentheses (hard)★

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  4. win8访问win7中的共享文件夹 映射网络驱动器

    同一个局域网内,配置好了一台win7(假设计算机名为A)的共享文件夹,设置方法可以参考http://www.doudouxitong.com/guzhang/xitongjiqiao/2014/082 ...

  5. ios电话/密码/验证码/身份证的正则表达式

    // 一 .电话号码正则表达式 -(BOOL)testPhoneNumber:(NSString *)text { NSString *regex =@"(13[0-9]|0[1-9]|0[ ...

  6. 备忘zookeeper(单机+伪集群+集群)

    #下载: #单机模式 解压到合适目录. 进入zookeeper目录下的conf子目录, 复制zoo_sample.cfg-->zoo.cfg(如果没有data和logs就新建):tickTime ...

  7. oracle学习不错的网站

    http://oracle-base.com/articles/linux/rlwrap.php

  8. XMPP框架下微信项目总结(6)刷新好友列表(删除,添加好友)

    原理:1 服务器(openfire)添加/删除 好友,会向客户端(app)发送消息, 2 代理(xmppStreamDelegate)监听到添加/删除消息后,花名册模块(RosterModule)会在 ...

  9. HTTP协议/RTSP协议/RTMP协议的区别

    RTSP. RTMP.HTTP的共同点.区别 共同点: 1:RTSP RTMP HTTP都是在应用应用层. 2: 理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP, ...

  10. ThinkPHP入门(二)

    smarty使用 smarty引入流程 1. 控制器IndexAction.class.php function index() $this -> display(); (父类Action的di ...