UVa Volume 1. Elementary Problem Solving :: String
2010-05-19 22:12
399 查看
Volume
1. Elementary Problem Solving
:: String
string基础知识:http://hi.baidu.com/ybbaigo/blog/item/ce1490fb51e6a561034f5648.html
1.
401 - Palindromes
题目大意:判断一个字符串是不是回文串和镜像串
没什么技术含量,就是数组赋初值和字符转化为数组下标两点
2.
10010 - Where's
Waldorf?
题目大意:在一个给定的字符矩阵中找到所给字符串,8个方向都行
首先是都要转化成大写字母,其次可以用方向数组来简化代码,不用写8个方向,只写一个就行了,再有flag=1;要写到if语句里面,否则会有很诡异的错误。
1. Elementary Problem Solving
:: String
string基础知识:http://hi.baidu.com/ybbaigo/blog/item/ce1490fb51e6a561034f5648.html
1.
401 - Palindromes
题目大意:判断一个字符串是不是回文串和镜像串
#include <iostream> #include <string> #include <cctype> using namespace std; int main() { char a[35]={'A',' ',' ',' ','3',' ',' ','H','I','L',' ','J','M',' ','O',' ',' ',' ','2','T','U','V','W','X','Y','5','1','S','E',' ','Z',' ',' ','8',' '}; string s; int l,i,flag1,flag2; while(cin>>s) { flag1=1;flag2=1;l=s.length(); for(i=0;i<l/2;i++)if(s[i]!=s[l-i-1]){flag1=0;break;} for(i=0;i<l;i++) { if(isalpha(s[l-i-1])){if(s[i]!=a[(int)s[l-i-1]-'A']){flag2=0;break;}} else if(s[i]!=a[(int)s[l-i-1]-'1'+26]){flag2=0;break;} } if(!flag1&&!flag2)cout<<s<<" -- is not a palindrome./n"; else if(flag1&&!flag2)cout<<s<<" -- is a regular palindrome./n"; else if(!flag1&&flag2)cout<<s<<" -- is a mirrored string./n"; else cout<<s<<" -- is a mirrored palindrome./n"; cout<<endl; } return 0; }
没什么技术含量,就是数组赋初值和字符转化为数组下标两点
2.
10010 - Where's
Waldorf?
题目大意:在一个给定的字符矩阵中找到所给字符串,8个方向都行
#include <iostream> #include <string> #include <cctype> using namespace std; //ifstream fin("in.in"); string a[100],b; int flag,num,i,j,m,n,k,t,x,y,l; int main() { cin>>num; for(j=1;j<=num;j++) { cin>>m>>n; for(i=0;i<m;i++) { cin>>a[i]; for(k=0;k<a[i].length();k++)a[i][k]=toupper(a[i][k]); } cin>>k; for(i=0;i<k;i++) { cin>>b; l=b.length(); for(t=0;t<l;t++)b[t]=toupper(b[t]); for(y=0;y<n;y++) { flag=0; for(x=0;x<m;x++) { if(x+l-1<m) { flag=1; for(t=0;t<l;t++)if(a[x+t][y]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(y+l-1<n) { flag=1; for(t=0;t<l;t++)if(a[x][y+t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(x-l+1>=0) { flag=1; for(t=0;t<l;t++)if(a[x-t][y]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(y-l+1>=0) { flag=1; for(t=0;t<l;t++)if(a[x][y-t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(x+l-1<m&&y+l-1<n) { flag=1; for(t=0;t<l;t++)if(a[x+t][y+t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(x-l+1>=0&&y+l-1<n) { flag=1; for(t=0;t<l;t++)if(a[x-t][y+t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(x+l-1<m&&y-l+1>=0) { flag=1; for(t=0;t<l;t++)if(a[x+t][y-t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } if(x-l+1>=0&&y-l+1>=0) { flag=1; for(t=0;t<l;t++)if(a[x-t][y-t]!=b[t]){flag=0;break;} if(flag){cout<<x+1<<" "<<y+1<<endl;break;} } } if(flag)break; } } if(j!=num)cout<<endl; } return 0; }
首先是都要转化成大写字母,其次可以用方向数组来简化代码,不用写8个方向,只写一个就行了,再有flag=1;要写到if语句里面,否则会有很诡异的错误。
相关文章推荐
- Volume 1. Elementary Problem Solving :: String Uva 401,10010,10361,537,409
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving String
- uva算法入门经典题解导航 - Volume 1. Elementary Problem Solving - String
- Volume 1. Elementary Problem Solving :: Big Number Uva 424,10106,465,748,10494
- Volume 1. Elementary Problem Solving :: Maths - Misc Uva 113,10161,253,621,10025,591,107
- Vomume 1.Elementary Problem Solving->volume 1 string 401-Palindromes
- Volume 1. Elementary Problem Solving->Volume 1 String 409 - Excuses, Excuses!
- Volume 1. Elementary Problem Solving :: Maths - Number Theory Uva 575,10110,550,568,408,10061,10392
- Volume 1. Elementary Problem Solving :: Maths - Simple Geometry Uva 10250,579,375,10387,10112
- Volume 1. Elementary Problem Solving->Volume 2 Big Number 10106 - Product
- uva算法入门经典题解导航 - Volume 1. Elementary Problem Solving
- [索引] Volume 1. Elementary Problem Solving
- 【索引】Volume 1. Elementary Problem Solving
- uva算法入门经典题解导航 - Volume 1. Elementary Problem Solving - Sorting/Searching
- 【索引】Volume 1. Elementary Problem Solving
- uva算法入门经典题解导航 - Volume 1. Elementary Problem Solving - Maths - Misc
- 【索引】Volume 1. Elementary Problem Solving
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving Big Number
- uva算法入门经典题解导航 - Volume 1. Elementary Problem Solving - Maths - Simple Geometry
- [索引] Volume 1. Elementary Problem Solving