poj 2041 Unreliable Message 字符串处理

水题,直接贴代码。

//poj 2041
//sep9
#include <iostream>
using namespace std;
char mode[128];
char ori[128],res[128];
int len;
void J()
{
	ori[0]=res[len-1];
	for(int i=1;i<len;++i)
		ori[i]=res[i-1];
}
void C()
{
	ori[len-1]=res[0];
	for(int i=0;i<len-1;++i)
		ori[i]=res[i+1];
}
void E()
{
	int i;
	for(i=0;i<len/2;++i)
		ori[i]=res[i+(len+1)/2];
	if(len%2==1)
		ori[len/2]=res[len/2];
	for(i=(len+1)/2;i<len;++i)
		ori[i]=res[i-(len+1)/2];
}
void A()
{
	for(int i=0;i<len;++i)
		ori[i]=res[len-1-i];
}
void P()
{
	for(int i=0;i<len;++i)
		if(res[i]<='9'&&res[i]>='0')
			ori[i]=res[i]=='0'?'9':res[i]-1;
		else
			ori[i]=res[i];
}
void M()
{
	for(int i=0;i<len;++i)
		if(res[i]<='9'&&res[i]>='0')
			ori[i]=res[i]=='9'?'0':res[i]+1;
		else
			ori[i]=res[i];
}
int main()
{
	int i,n;
	scanf("%d",&n);
	while(n--){
		scanf("%s%s",mode,res);
		len=strlen(res);
		ori[len]='\0';
		for(i=strlen(mode)-1;i>=0;--i){
			if(mode[i]=='J')
				J();
			else if(mode[i]=='C')
				C();
			else if(mode[i]=='E')
				E();
			else if(mode[i]=='A')
				A();
			else if(mode[i]=='P')
				P();
			else if(mode[i]=='M')
				M();
			strcpy(res,ori);
		}
		printf("%s\n",res);
	}
	return 0;
} 
时间: 2024-10-11 22:44:11

poj 2041 Unreliable Message 字符串处理的相关文章

POJ 2041 Unreliable Message

简单模拟.按照题意处理一下字符串即可. 应该是写题号写错了,本来我在VirtualJudge是添加的POJ 并查集与生成树的题. #include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<queue> #include<map> #include<stack> #include

POJ 1035 Spell Check 字符串处理

被这样的题目忽悠了,一开始以为使用Trie会大大加速程序的,没想到,一不小心居然使用Trie会超时. 最后反复试验,加点优化,终于使用Trie是可以过的,不过时间大概难高于1500ms,一不小心就会超时. 看来这是一道专门卡Trie的题目,只好放弃不使用Trie了. 也得出点经验,如果字符串很多,如本题有1万个字符串的,那么还是不要使用Trie吧,否则遍历一次这样的Trie是十分耗时的,2s以上. 于是使用暴力搜索法了,这里的技巧是可以使用优化技术: 1 剪枝:这里直接分组搜索,分组是按照字符串

poj 1200 --- 不错的字符串HASH构造方法

题目:http://poj.org/problem?id=1200 题意:给一个字符串,给定n和nc,字符串里最多有nc个不同的字符,问长度为n的不同子串最多有几个 和上一篇现场赛那个一样,也是难在判重处理不好会超时 方法:将长度为n的子串映射为一个nc进制的数,开一个大数组,判断是否重复 #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include

poj 1035 纯正的字符串水

Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22673   Accepted: 8258 Description You, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given word

poj 2752 求一个字符串所有的相同前后缀

求一个字符串所有的相同前后缀Sample Input ababcababababcababaaaaaSample Output 2 4 9 181 2 3 4 5 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <stack> 5 using namespace std; 6 7 const int N = 400010; 8 int next[N]; 9 c

POJ 1318 Word Amalgamation (字符串 STL大水)

Word Amalgamation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8665   Accepted: 4172 Description In millions of newspapers across the United States there is a word game called Jumble. The object of this game is to solve a riddle, but

hdu 4300 Clairewd’s message 字符串哈希

Clairewd’s message Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10376    Accepted Submission(s): 3709 Problem Description Clairewd is a member of FBI. After several years concealing in BUPT,

poj 1780 欧拉回路构造字符串

和西安邀请赛D题类似的题目 这道题会爆栈,所以要非递归写,但是看了很久其实代码没理解,回头重写 题解:http://blog.csdn.net/dongshimou/article/details/37815377 http://www.cnblogs.com/372465774y/p/3200775.html #include <cstdio> #include <cmath> #include <iostream> using namespace std; cons

POJ 2041

#include <iostream> #include <string> #include <algorithm> using namespace std; string fun_c(string s); string fun_j(string s); string fun_e(string s); string fun_a(string s); string fun_p(string s); string fun_m(string s); int main() {