题一
字符串的序号
问题描述
字符串 acab 含有两个 a
,一个 b ,一个 c ,和 acab 含的字母和每个字母的个数都相等的字符串还有:aacb,baca等,因为他们也是含有两个
a ,一个 b ,一个 c 。所有满足这个性质的字符串按字典顺序排列后,acab
是第 5 个,我们就说 acab 的序号是 5 .再如:ba 的序号是
2,aa 的序号是 1.编程求出给定字符串 S(长度<=100) 的序号
P(保证<=30000)注意:字符串只含小写字母。
输入:
S
输出:
P
样例
输入:
acab
输出:
5
|
题二 尔虞我诈
问题描述
曾经有一个颇为流行的小游戏,名称已无法考证,我们姑且把它叫做“尔虞我诈”。游戏规则是这样的:有N人参加比赛,每两人进行一场游戏(因此共进行N*(N-1)/2场游戏),每场游戏分十轮,在每轮中,两人同时说出“TRADE”和“CHEAT”其中之一,如果两人都“TRADE”,各得一分,如果两人都“CHEAT”,各扣一分,如果一个“TRADE”,一个“CHEAT”,则CHEAT的那个人得2分,TRADE的扣2分。每人得的N-1场分数的总和为该人的最后得分,看谁的得分最高。当然,在比赛之前每人的得分为0。如何才能取胜呢?人们设计了很多战术,可以用以下的“战术语言”来描述:
<program> ::= <statement>.
<statement> ::= <command> | <ifstat>
<ifstat> ::= IF <condition> THEN <statement> ELSE <statement>
<condition> ::= <cond> | <cond> <op> <condition>
<op> ::= AND | OR
<cond> ::= <memory> {= | #} {<command> | NULL}
<memory> ::= {MY | YOUR} LAST {1 | 2}
<command> ::= TRADE | CHEAT
#的意思是“不等于”,NULL的意思是空,不存在。
空格可以在任何地方出现。
例如:
CHEAT.
和
IFYOURLAST2=NULLTHENTRADEELSEIFYOURLAST1=TRADETHENTRADEELSECHEAT.
是两个合法的战术语言程序。
编程模拟给定程序间的游戏情况。 输入:第一行,N(<=10),以下
N 行,每一行为一个程序(长度<=255)
输出:共 1 行,有 N 个整数,分别为各程序的最后得分。 样例
输入:
3
CHEAT.
IF MY LAST1 = CHEAT THEN TRADE ELSE CHEAT.
IFYOURLAST2=NULLTHENTRADEELSEIFYOURLAST1=TRADETHENTRADEELSECHEAT.
输出:
1 -12 -13
|
题三 猫和老鼠
问题描述
猫和老鼠在10*10的方格中运动,例如:
*...*.....
......*...
...*...*..
..........
...*.C....
*.....*...
...*......
..M......*
...*.*....
.*.*......
C=猫(CAT)
M=老鼠(MOUSE)
*=障碍物
.=空地
猫和老鼠每秒中走一格,如果在某一秒末他们在同一格中,我们称他们“相遇”。
注意,“对穿”是不算相遇的。猫和老鼠的移动方式相同:平时沿直线走,下一步如果会走到障碍物上去或者出界,就用1秒的时间做一个右转90度。一开始他们都面向北方。
编程计算多少秒以后他们相遇。
输入:10行,格式如上
输出:相遇时间T。如果无解,输出-1。
样例
输入:
*...*.....
......*...
...*...*..
..........
...*.C....
*.....*...
...*......
..M......*
...*.*....
.*.*......
输出:
49
|