#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. cxGRID中的字段怎么能以0.00的格式显示

    CXGRID中的字段如何能以0.00的格式显示在CXGRID中如何让字段能以0.00的格式显示,我的字段是FLOAT类型,满意的马上给分! ------解决方案-------------------- ...

  2. bind+dlz+mysql实现区域记录动态更新

    BIND-DLZ实验:http://bind-dlz.sourceforge.net/ 实验环境:RHEL4,BIND-9.5.0-P2.tar.gz(9.4.0以上版本都已含DLZ补丁),Mysql ...

  3. sprinvMVC路径拦截

    关于这种路径的拦截: http://localhost:8080/moodleCourse-tool/scorm/23681/mod_scorm/content/1/index_SCORM.html ...

  4. codeforces gym 100286 H - Hell on the Markets (贪心算法)

    题目链接 题意:n个数分别为a[i],问是否存在一组对应的b[i],b[i]=1 || b[i]=-1,使得ai*bi的n项和为0. 题解: 先证明一个结论吧,对于1≤ai≤i+1,前面ai个数一定可 ...

  5. sql语句按照汉字拼音首字母排序

    oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STR ...

  6. 第一次点击Div1显示Div2,再次点击Div1的时候又隐藏Div2

    要使用Jquery来实现,记得引用Jquery库哦,代码如下: $(document).ready(function(){ $("#ck1").click(function(){ ...

  7. SQL Server 查询时间段内数据

    方式一: ALTER Proc [dbo].[usp_Rpt_AcctTypeAudit] @FromDate datetime=null, -- yyyy-mm-dd (may change in ...

  8. SSH详解

    Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议.加密保证了数据的保密性和完整性.SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用 ...

  9. jquery获得select option的值 和对select option的操作

    jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...});   //为Se ...

  10. Android自学指导

    如果想自学Android,以下的文章可以作为参考: 如何自学Android(Gityuan) 那两年炼就的Android内功修养(老罗的Android之旅)