这题目WA了好几次,主要是我没有理解清楚No solution.这个情况。

如果在match原文做好了,基本map一下就能过了。

与原句match的条件就是:

1.出现了26个字母

2.该空格的地方要空格,不该空格的地方不要空格

3.该相同的地方相同,不该相同的地方不相同。

~真的是好久不做PC题目,输入输出都不习惯了~弄得好郁闷。

/*******************************************************************************/
/* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
* Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
* Encoding : UTF8
* Date : 2014-03-30
* All Rights Reserved by yaolong.
*****************************************************************************/
/* Description: ***************************************************************
*****************************************************************************/
/* Analysis: ******************************************************************
*****************************************************************************/
/*****************************************************************************/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<vector>
using namespace std;
string KN="the quick brown fox jumps over the lazy dog";
int lenKN=KN.length();
char p[27];
bool isMatch(string s)
{
int i,j;
if(s[3]!=' '||s[9]!=' '||s[15]!=' '||s[ 19]!=' '||s[25]!=' '|| s[30]!=' '||s[34]!=' '||s[39]!=' ')
return 0; memset(p,0,sizeof(27));
for(i=0;i<s.length();i++){
if(s[i]!=' ')
p[s[i]-'a']++;
}
int res=0;
for(i=0;i<26;i++){
if(p[i]) res++;
}
if(res!=26) return 0;
for(i=0;i<lenKN;i++){
for(j=0;j<lenKN;j++){
if(KN[i]==KN[j]&&s[i]!=s[j]){
return 0;
}
if(KN[i]!=KN[j]&&s[i]==s[j]){
return 0;
} }
} return 1; }
int main()
{ int cases,i,j;
vector<string> str;
string tmp;
map<char,char> mp;
cin>>cases;
getchar();
getchar();
int first=1;
while(cases--)
{ if(first) first=0;
else cout<<endl; mp.clear();
str.clear(); while(getline(cin,tmp)&&tmp.length())
{
str.push_back(tmp);
}
int siz=str.size(); int flag=0;
for(i=0; i<siz; i++)
{ if(str[i].length()==lenKN&&isMatch(str[i]))
{
flag=1; for(j=0; j<lenKN; j++)
{
mp[str[i][j]]=KN[j];
} }
} if(flag)
{
for(i=0; i<siz; i++)
{
for(j=0; j<str[i].length(); j++)
cout<<mp[str[i][j]]; cout<<endl; }
}
else cout<<"No solution.\n"; } return 0; }

PC110304/UVA850的更多相关文章

  1. UVA850【简单模拟】

    题目:解密句子.有一些被加密的句子已知一条模板翻译,判断是否可以解密,可以的话将所有句子解密. #include <stdio.h> #include<iostream> #i ...

随机推荐

  1. eclipse安装Hadoop1.1.2版本开发插件

    Hadoop1.1.2版本没有直接适合Eclipse的安装插件,需要手动打包jar文件. 我的系统配置: VMware Workstation10 CentOS-6.5-i386 hadoop-1.1 ...

  2. JAVA--线程wait()、lnotify()和notifyAll()方法

    join()方法是Thread类的一个方法,而wait().notify().notifyAll()是java.lang.Object类的方法,这意味着,任何一个Java对象(包括线程对象)都有wai ...

  3. []cp,转载]提示MyEclipse Trial Expired,如何手动获取MyEclipse 注册码!很牛!

    1.建立JAVA Project,随便命名,只要符合规则就行. 2.在刚刚建好的Project右击src,新建一个类,命名为MyEclipseGen,把.java里本来有的代码全部删掉,再把下面的代码 ...

  4. Android五大布局重新回顾

  5. C# checked关键字当属性

    前端extjs 以及 bootstrap-treeview 插件要用到这个属性,加@符号解决

  6. JavaScript- 省市联动代码

    以下是JS省市联动菜单代码: 代码一: <html> <head> <title></title> <script language=" ...

  7. PAT 1069. The Black Hole of Numbers (20)

    For any 4-digit integer except the ones with all the digits being the same, if we sort the digits in ...

  8. SDK更新太慢

    同时,更新ADT和SDK Manager 在SDK Manager下Tools->Options打开了SDK Manager的Settings,选中“Force https://… source ...

  9. css控制文本框的只读属性的方法

    css 封装整个只读文本框的属性: .TextBoxReadOnly{ border:1px solid #C0C0C0; text-align:left; background-color:#D3D ...

  10. Unity3d + NGUI 多分辨率适应

    更多型号适合的移动终端 现在我们要介绍的<链战争>游戏改编方法,这种适应方法UI这是一个基本维度,背景是一个基本的尺寸.背景比UI没有实际影响某一部分的额外部分,这样就避免了适应iPhon ...