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'; ...
随机推荐
- CEF3开发者系列之类和接口
CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节.它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户 ...
- iOS CLLocationManager 定位
今天写个定位,本来很简单,但是在填写plist时,通过系统提示,只能看到NSLocationUsageDescription项目,根本不提示 (1)NSLocationAlwaysUsageDescr ...
- Effective C++ -----条款47:请使用traits classes表现类型信息
Traits classes使得“类型相关信息”在编译期可用.它们以template和“templates特化”完成实现. 整合重载技术(overloading)后,traits classes有可能 ...
- NSOJ A fairy tale of the two(最小费用最大流、SPFA版本、ZKW版本)
n,m<=20,给两个n×m布尔矩阵,每次操作可将第一个矩阵的2个相邻元素互换.输出最少操作次数使得两个矩阵完全一样. 比赛的时候想过按照二分图完美匹配的类似做法构图,不过想到边太多以及卡各种题 ...
- Cuckoo for Hashing_双哈希表
问题 B: Cuckoo for Hashing 时间限制: 1 Sec 内存限制: 64 MB提交: 24 解决: 12[提交][状态][讨论版] 题目描述 An integer hash ta ...
- 修改EsayUi 中 tree 的原有样式,变为according 之类的样式 ,且子菜单显示在右侧
easyUi 中 tree 框架的属性有: 修改原有展开样式代码如下: onExpand:function(node,param){ $(this).children("li"). ...
- 【leetcode】Surrounded Regions(middle)☆
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...
- HDU 5898 odd-even number (数位DP) -2016 ICPC沈阳赛区网络赛
题目链接 题意:一个数字,它每个数位上的奇数都形成偶数长度的段,偶数位都形成奇数长度的段他就是好的.问[L , R]的好数个数. 题解:裸的数位dp, 从高到低考虑每个数位, 状态里存下到当前位为止的 ...
- NEFU 505 超级红与黑 (高斯消元)
题目链接 中文题,改下模板构造一下就能过了,数据有点水,不过还是需要自由变元枚举的. #include <iostream> #include <cstdio> #includ ...
- LightOJ 1236 - Pairs Forming LCM(素因子分解)
B - Pairs Forming LCM Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...