c++世界杯冠军魔咒是什么词典有啥错?

查看: 1936|回复: 8
写了个PASCAL版的魔咒词典,11考浙大的试试写成C/C++吧
主题帖子积分
考研年份2010
报考学校SJTU
本科学校HNU
以前偷懒,用C++的MAP写这玩意,其实发现根本不需要,呵呵,原创内容呀。
var
& & a,b:array[1..100001]
& & s:
& & i,j,k,l,t:
& & m:
begin
readln(s);
i:=1;
while s&&'@END@'do
while s[j]&&']'do
&&begin
&&a[i]:=a[i]+s[j];
&&inc(j)
&&
&&a[i]:=a[i]+s[j];
for k:=j to length(s) do
&&begin
&&b[i]:=b[i]+s[k];
&&
readln(l);
for j:=1 to l do
begin
&&readln(s);
&&m:=
&&for k:=1 to i do
& &begin
& & if a[k]=s then
& &&&begin
& &&&m:=
& &&&writeln(b[k]);
& &&&break
& &&&end
& & else if b[k]=s then
& &&&begin
& &&&m:=
& &&&for t:=2 to length(a[k])-1 do
& &&&write(a[k][t]);
& &&&
& &&&break
& &&&end
& &
& & if not m then
& &&&begin
& &&&writeln('what?')
& &&&end
end
end.
复制代码
已经归隐,微信加公众号「靖难」或 扫描头像二维码可以找到我.
主题帖子积分
报考学校浙大
本科学校西北工大
不懂PASCAL。。
主题帖子积分
考研年份2008
报考学校中南大学
本科学校浙江大学
PASCAL的代码风格看起来感觉很奇怪。和写汇编代码感觉差不多。
主题帖子积分
考研年份2010
报考学校SJTU
本科学校HNU
& &我现在写PASCAL比写C++还顺利,汗。。。。
已经归隐,微信加公众号「靖难」或 扫描头像二维码可以找到我.
主题帖子积分
王道论坛新道友, 积分 0, 距离下一级还需 1 积分
王道论坛新道友, 积分 0, 距离下一级还需 1 积分
本科学校清华大学
& & 你们在本科期间学了几种语言啊,PASCAL是自学的还是?我不是计算机专业的
主题帖子积分
考研年份2010
报考学校SJTU
本科学校HNU
dongxie2010
& & PASCAL是高中的时候搞OI学的。本科的时候主要学的是C/C++,JAVA有一点点接触过
已经归隐,微信加公众号「靖难」或 扫描头像二维码可以找到我.
主题帖子积分
考研年份2013
报考学校武汉大学
不懂PASCAL的飘过
话费q币充值
主题帖子积分
不去追逐你所渴求,你将永远不会 ...
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2011
报考学校浙江大学
本科学校哈尔滨商业大学
本帖最后由 ruanjunlove 于
12:57 编辑
String[]& &a,b;
String&&s;
long int&&i ,j,k,l,t;
while(s!='@end@')
& &while(s[j]!=']'){
& && &&&a=a+s[j];
& && && &inc(j);
& &a+=s[j];
& &inc(j,2);
& &for(k=j;j&=length(s);j++)
& && &&&b+=s[k];
& &inc(i);
& &gets(s);
for(j=l;j&=1;j--)
&&gets(s);
&&for(k=l;K&=i;K++){
& &&&if(a[k]==s)& & {
& && && &m=
& && && &printf(b[k]);printf(&\n&);
& &&&else if(b[k]==s){
& && &&&m=
& && &&&for(t=2;t&=length(a[k])-1;t++)
& && && &&&printf(a[k][t]);& && &
& && && && &printf(&\n&);
& && && && && &
& &if (!m){
& && & printf(&what?\n&);
注意写的仓促,可能有误。i和l还有其它字母看的不太清,你可以再试着修改一下,大致语法是这样的,我也没有学过pascal,看数据结构与试题精析那本书看会的。写的不好,别骂我就行!
任前方挫折坎坷不断,也要拼尽全力向前冲!!!
主题帖子积分
王道论坛初级道友, 积分 181, 距离下一级还需 19 积分
王道论坛初级道友, 积分 181, 距离下一级还需 19 积分
考研年份2012
报考学校哈尔滨工业大学
本科学校牡丹江师范
网上有把pascal转c的程序吧,好像见过类似东东。。。
王道是一种精神。。。题目1029:魔咒词典
不涉及算法,正确的输入和存储数据,然后进行查找即可。
#include &iostream&
#include &string&
#include &vector&
#include &stdio.h&
struct Item
int main()
vector&Item&
while (cin && s)
if (s == "@END@")
getline(cin,k);
temp.word =
string real_k;
for (int i = 1;i & k.size();i++)
real_k += k[i];
temp.func = real_k;
str.push_back(temp);
vector&string&
for (int i = 0;i &i++)
getline(cin,m);
ss.push_back(m);
for (int i = 1;i &=i++)
if (ss[i][0] == '[')
for (j = 0;j & str.size();j++)
if (ss[i] == str[j].word)
cout && str[j].func &&
if (j == str.size()) cout && "what?" &&
for (k = 0;k & str.size();k++)
if (ss[i] == str[k].func)
for (int p = 1;p & str[k].word.size()-1;p++)
cout && str[k].word[p];
if (k == str.size()) cout && "what?" &&
本题如果利用c++中的String和STL类库中的map处理的话会极为方便
#include&iostream&
#include&string&
#include&algorithm&
#include&map&
int main()
string n,m,
map&string,string&
while (getline(cin,n) && n != "@END@")
a = n.find('[');
b = n.find(']');
sub = n.substr(a+1,b-1-a);
m = n.substr(b+2,n.size()-b-2);
getline(cin,n);
//这里需要读走缓冲区中的回车键
for (int i = 0;i &i++)
getline(cin,n);
if (n[0] == '[')
n.erase(0,1);
n.erase(n.size()-1,1);
if (s.find(n) == s.end()) cout && "what?" &&
else cout && s[n] &&
http://blog.csdn.net/u/article/details/
http://www.cnblogs.com/xFreedom/archive//2048037.html
没有更多推荐了,1029.魔咒词典
题目描述:
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(&=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”
样例输入:
[expelliarmus] the disarming charm
[rictusempra] send a jet of silver light to hit the enemy
[tarantallegra] control the movement of one's legs
[serpensortia] shoot a snake out of the end of one's wand
[lumos] light the wand
[obliviate] the memory charm
[expecto patronum] send a Patronus to the dementors
[accio] the summoning charm
the summoning charm
take me to the sky
样例输出:
light the wand
what?what?
#include &iostream&
#include &algorithm&
#include &string&
#include &map&
class FindString
FindString(const string &str):m_str(str){}
bool operator()(const pair&string,string& &p) const
return m_str == p.
int main()
typedef map&string,string& StringM
typedef StringMap::iterator StringMapI
StringMapI
while(getline(cin,a))
if(a == "@END@")
string::size_type pos = a.find(']');
string first = a.substr(1,pos - 1);
string second = a.substr(pos + 2);
smap.insert(make_pair(first,second));
cin.ignore();
for(int i = 0; i & ++i)
getline(cin,c);
if(c[0] == '[')
c = c.substr(1,c.size() - 2);
it = smap.find(c);
if(it == smap.end())
cout && "what?" &&
cout && it-&second &&
it = find_if(smap.begin(),smap.end(),FindString(c));
if(it == smap.end())
cout && "what?" &&
cout && it-&first &&
没有更多推荐了,业精于勤,荒于嬉;行成于思,毁于随.
题目1029:魔咒词典
时间限制:5 秒
内存限制:32 兆
特殊判题:否
提交:3097
题目描述:
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(&=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”
样例输入:
[expelliarmus] the disarming charm
[rictusempra] send a jet of silver light to hit the enemy
[tarantallegra] control the movement of one's legs
[serpensortia] shoot a snake out of the end of one's wand
[lumos] light the wand
[obliviate] the memory charm
[expecto patronum] send a Patronus to the dementors
[accio] the summoning charm
the summoning charm
take me to the sky
样例输出:
light the wand
#include&iostream&#include&map&using namespace
int main(){
map&string,string&
map&string,string&
while(getline(cin,s) && s!="@END@")
int n=s.find(']')-1;
magic.insert(make_pair( s.substr(1,n), s.substr(n+3) ) );
function.insert( make_pair( s.substr(n+3),s.substr(1,n) ) );
cin.get();
while(n--)
getline(cin,s);
if(s[0]=='[')
s=s.substr(1,s.size()-2);
if(magic.count(s))s=magic[s];
else s="what?";
if(function.count(s))s=function[s];
else s="what?";
return 0;}
没有更多推荐了,show me the code ...
题目1029:魔咒词典
题目1029:魔咒词典
时间限制:5 秒
内存限制:32 兆
特殊判题:否
提交:5586
解决:1627
题目描述:
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(&=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”
样例输入:
[expelliarmus] the disarming charm
[rictusempra] send a jet of silver light to hit the enemy
[tarantallegra] control the movement of one's legs
[serpensortia] shoot a snake out of the end of one's wand
[lumos] light the wand
[obliviate] the memory charm
[expecto patronum] send a Patronus to the dementors
[accio] the summoning charm
the summoning charm
take me to the sky
样例输出:
light the wand
#include &stdio.h&
#include &iostream&
#include &stack&
#include &string.h&
#include &queue&
#include &cmath&
#include &vector&
#include &algorithm&
#include &map&
#include &set&
#include &string&
typedef long long LL;
#define MAX 1000001
bool cmp(pair&string, int& a, pair&string, int& b) {
if(a.second != b.second) {
return a.second & b.
return a.first & b.
int main() {
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
map&string, string&
while(getline(cin, str)){
if(str != "@END@"){
string str1, str2;
int pos_1 = str.find(']');
str1 = str.substr(1, pos_1 - 1);
str2 = str.substr(pos_1 + 2, str.size()
- pos_1 - 2);
//cout && str2 &&
mapp[str1] = str2;
mapp[str2] = str1;
getchar();
for(int i = 0; i & i++){
getline(cin, temp);
int pos_2 = temp.find(']');
if(pos_2 != string::npos){
temp = temp.substr(1, pos_2 - 1);
//cout && temp &&
if(mapp[temp] != ""){
cout && mapp[temp] &&
cout && "what?" &&
//Map进行查找。。。
//if(Map.find(str) == Map.end())
printf("what?\n");
/**************************************************************
Problem: 1029
User: Crazy_man
Language: C++
Result: Accepted
Time:50 ms
Memory:2584 kb
****************************************************************/
没有更多推荐了,

我要回帖

更多关于 西班牙魔咒 的文章

 

随机推荐