??xml version="1.0" encoding="utf-8" standalone="yes"?>
癑ֺ的工E师们是非常注重效率的,在长期的开发与试q程中,他们逐渐创造了一套独特的~略语。他们在qx的交谈、会议,甚至在各U技术文档中都会大量q用?/span>
Z让新员工可以更快地适应癑ֺ的文化,更好地阅d司的技术文档,人力资源部决定开发一套专用的译pȝQ把相关文档中的~略语和专有名词译成日常语a?/span>
输入要求Q?/span>
输入数据包含三部分:
1. W一行包含一个整?span>N(N<=10000)Q表Cd有多个~略语的词条Q?span>
2. 紧接着?span>N行的输入Q每行包含两个字W串Q以I格隔开。第一个字W串为羃略语Q仅包含大写英文字符Q长度不过10字节Q,W二个字W串为日常语aQ不包含I格Q长度不过255字节Q;
3. 从第N+2开始到输入l束为包含羃略语的相x档(总长度不过1000000个字节)。例Q?span>
6
PS 门户搜烦?span>
NLP 自然语言处理
PM 产品市场?span>
HR 人力资源?span>
PMD 产品推广?span>
MD 市场发展?span>
癑ֺ的部门包?span>PSQ?span>PMQ?span>HRQ?span>PMDQ?span>MD{等Q其?span>PSq包?span>NLP组?span>
样例Q?span>in.txt
输出要求Q?/span>
输出羃略语转换成日常语a后的文档。(羃略语转换成日常语aQ其他字W保留原P。例Q?span>
癑ֺ的部门包括门h索部Q品市场部Qh力资源部Q品推qKQ市场发展部{等Q其中门h索部q包括自然语a处理组?span>
样例Q?span>out.txt
2.饭团的烦?/span>
“午餐饭团”是百度内部参与h数最多的民间l织?span>
同一个部门的、同一所大学的、同一q出生的、用同一U型L脑的员工们L以各U理ql各U长期的、时的饭团?/span>
参加饭团Q不仅可以以优惠的h格尝到更加丰富的菜式Q还可以在吃饭的时候和同事们增q感情?span>
但是Q随着癑ֺ的员工越来越多,各个饭团的管理变得繁杂v来。特别是Z照顾员工们越来越挑剔的胃Q饭团的点菜负责人的压力也越来越大。现在,q个d׃l?span>“癑ֺ之星”了,因ؓQ你要为所有的癑ֺ饭团设计一个自动点菜的法?/span>
饭团点菜的需求如下:
1Q经是我们要考虑的一个因素,既要充分利用癑ֺ员工的午补助,又不能铺张浪贏V因此,我们希望最后的人均费用接q?span>12元越好?span>
2Q菜式丰富是我们要考虑的另一个因素。ؓ单v见,我们各U菜肴的属性归lؓ荤菜Q素菜,辛GQ清淡,q且每个菜只能点一ơ?span>
3Q请谨记Q?/span>癑ֺ饭团在各大餐馆n?span>8折优?/span>?/span>
输入要求Q?/span>
1Q输入数据第一行包含三个整?span>NQ?span>MQ?span>K(0<N<=16Q?span>0<M<=NQ?span>0<K<=12)Q分别表C单上菜的数目Q饭团需要点的菜的数目,餐的h敎ͼ
2Q紧接着N行,每行的格式如下:
菜名Q长度不过20个字W) hQ原P整数Q是否荤菜(1表示是,0表示否) 是否辛GQ?span>1表示是,0表示否)Q?span>
3Q第N+2行是 a b c d 四个整数Q分别表C需要点的荤菜,素菜Q辛辣,清E菜的数目。例Q?span>
3 2 2
水煮?span> 30 1 1
口水?span> 18 1 1
清炖豆腐 12 0 0
1 1 1 1
样例Q?span>in.txt
输出要求Q?/span>
对于每组试数据Q输出数据包?span>M+1行,?span>M行每行包含一个菜名(按菜名在原菜单的序排序Q。第M+1行是人均消费Q结果保留两位小数。例Q?span>
口水?span>
清炖豆腐
12.00
样例Q?span>out.txt
3.变态比赛规?/span>
Z促进各部门员工的交流Q百度D办了一场全公司范围内的“拳皇”Q百度内部最行的格斗游戏)友谊赛,负责l织q场比赛的是癑ֺ的超U?span>“拳皇”q?span>W.Z?span>W.Z不想用传l的淘汰赛或者@环赛的方式,而是自己制定了一个比赛规则?/span>
׃一些员工(比如同部门或者相邻部门员工)qx接触的机会比较多Qؓ了促q不同部门之间的交流Q?span>W.Z希望员工自由分组。不同组之间的每两个人都会进行一场友谊赛而同一l内的h之间不会打Q何比赛?/span>
比如4个hQ编号ؓ1~4,如果分ؓ两个lƈ?span>1Q?span>2一个组Q?span>3Q?span>4一个组Q那么一共需要打四场比赛Q?span>1 vs 3Q?span>1 vs 4Q?span>2 vs 3Q?span>2 vs 4。而如果是1Q?span>2Q?span>3一l,4单独一l,那么一共需要打三场比赛: 1 vs 4Q?span>2 vs 4Q?span>3 vs 4?/span>
很快W.Z意识刎ͼq样的比赛规则可能会让比赛的场数非常多?span>W.Z想知道如果有N个hQ通过上面q种比赛规则QL赛场数有可能?span>K场吗Q比?span>3个hQ如果只分到一l则不需要比赛,如果分到两组则需?span>2场比赛,如果分ؓ三组则需?span>3场比赛。但是无论怎么分都不可能恰需?span>1场比赛?/span>
怿作ؓ~程高手的你一定知道该怎么回答q个问题了吧Q那么现在请你帮?span>W.Z吧?/span>
输入要求Q?/span>
每行Zl数据,包含两个数字 N, K(0<N<=500, K>=0)。例Q?span>
2 0
2 1
3 1
3 2
样例Q?span>in.txt
输出要求Q?/span>
对输入的N,K 如果N个员工通过一定的分组方式可以使比赛场数恰好ؓKQ则输出"YES"Q否则输?span>"NO"Q请全部使用大写字母Q,每组数据占一行。例Q?span>
YES
YES
NO
YES
样例Q?span>out.txt
4.蝈蝈计分
蝈蝈朋友刚刚学会了0~9q十个数?span>,也跟爸爸妈妈来参加百度每周进行的毛球活动。但是他q没有球拍高Q于是大Z叫他记录分数。聪明的蝈蝈发现只要记录q箋得分的情况就可以了,比如?span>“3 2
因ؓ癑ֺ内部p开始进行羽毛球联赛了,要先摸清大家的实力才好分l比赛呢~于是,大h们想知道以前每局的比分是怎样的,以及谁获得了胜利。要是遇CҎ比赛记录无法认比赛q程的情况,也要输出相应的提C哦?/span>
需要进一步说明的是,比赛是五局三胜的,每局先获得二十一分的Q但是胜方必领先对手两分或以上Q否则必ȝl比赛直C方超出对手两分ؓ止,比分多的一方获胜。Q何一方先莯三局后就获得最l胜利,比赛也相应的l束。而且蝈蝈保证?/span>完整的无多余信息?/span>记录了比赛?/span>
输入要求Q?/span>
1Q文件中W一行只有一个整?span>MQ表C蝈记录了多少场比赛的分数Q?span>
2Q在接下来的
3
23
9 7 3 6 2 4 7 8 3 2 7 9 X 2 2 1 2 1 X 1 X 1 1
25
9 3 8 5 4 8 3 9 8 4 X X X X 2 X X X X 2 8 4 9 2 4
43
7 7 7 7 7 3 4 5 6 7 6 5 4 2 1 3 5 7 9 7 5 3 1 3 0 9 9 3 9 3 2 1 1 1 5 1 5 1 5 1 5 5 1
样例Q?span>in.txt
输出要求Q?/span>
对应每一个分数记录,输出相应的每局分数Q每局分数都用两个整数表C,表示两个选手的得分,中间?span>":"分隔开Q每l分数记录间使用一个空行分隔开。如果相应的比赛l果无法预测Q以“UNKNOWN”一个单词独占一行表C(请全部用大写字母)。例Q?span>
21:17
24:22
21:3
UNKNOWN
21:14
20:22
21:23
21:16
21:9
样例Q?span>out.txt
5.座位调整
癑ֺ办公区里到处摆放着各种各样的零食。百度h力资源部的调研发玎ͼ员工如果可以在自己喜Ƣ的食旁边工作Q效率会大大提高。因此,癑ֺ军_q行一ơ员工位的大调整?/span>
调整的方法如下:
1Q首先将办公区按照各U零食的摆放分成N个不同的区域Q例如:可乐区,饼干区,牛奶区等{)Q?span>
2Q每个员工对不同的零食区域有不同的喜好程度(喜好E度?span>1~100的整敎ͼ喜好E度大表示该员工越希望被调整到相应的零食区域)Q?span>
3Q由于每个零食区域可以容U的员工数量有限Qh力资源部希望扑ֈ一个最优的调整Ҏ使得ȝ喜好E度最大?/span>
输入要求Q?/span>
文gW一行包含两个整?span>NQ?span>M(N>=1Q?span>M<=300)。分别表C?span>N个区域和M个员工;
W二行是N个整数构成的数列aQ其?span>a[i]表示W?span>i个区域可以容U的员工?span>(1<=a[i]<=MQ?span>a[1]+a[2]+...+a[N]=M)Q?span>
紧接着是一?span>M*N的矩?span>PQ?span>P(i,j)表示W?span>i个员工对W?span>j个区域的喜好E度。例Q?span>
3 3
1 1 1
100 50 25
100 50 25
100 50 25
样例Q?span>in.txt
输出要求Q?/span>
对于每个试数据Q输出可以达到的最大的喜好E度。例Q?span>
175
样例Q?span>out.txt
数据解释Q?/span>
此数据只存在一U安排方法,三个员工分别安置在三个区域。最l的喜好E度?span>100+50+25=175
6.剪刀矛_?/span>
N个小孩正在和你玩一U剪刀矛_布游戏(剪刀赢布Q布赢石_矛_赢剪刀Q?span>N个小孩中有一个是裁判Q其余小孩分成三l(不排除某些组没有M成员的可能性)Q但是你不知道谁是裁判,也不知道孩们的分组情况。然后,孩们开始玩剪刀矛_布游戏,一qMơ,每次L选择两个孩q行一轮,你会被告知结果,即两个小孩的胜负情况Q然而你不会得知孩具体出的是剪刀、石头还是布。已知各l的孩分别只会ZU手势(因而同一l的两个孩M是和局Q,而裁判则每次都会随便选择ZU手势,因此没有Z知道裁判到底会出什么。请你在Mơ剪刀矛_布游戏结束后Q猜猜谁是裁判。如果你能猜是裁判,误明最早在W几ơ游戏结束后你就能够定谁是裁判?/span>
输入要求Q?/span>
输入文g包含多组试数据Q每l测试数据第一行ؓ两个整数N?span>M(1<=N<=500Q?span>0<M<=2000)Q分别ؓ孩的个数和剪刀矛_布游戏进行的ơ数。接下来M行,每行两个整数且中间以一个符号隔开。两个整数分别ؓq行游戏的两个小孩各自的~号Qؓ于N的非负整敎ͼ。符L可能gؓ“=”?span>“>”?span>“<”Q分别表C和局、第一个小孩胜和第二个孩胜三U情c例Q?span>
3 3
0<1
1<2
2<0
3 5
0<1
0>1
1<2
1>2
0<2
4 4
0<1
0>1
2<3
2>3
1 0
样例Q?span>in.txt
输出要求Q?/span>
1Q每l测试数据输Z行,若能猜出谁是裁判Q则输出裁判的编Pq输出在W几ơ游戏结束后p够确定谁是裁判,孩的编号和游戏ơ数以一个空格隔开Q?span>
2Q如果无法确定谁是裁判,输出-2Q如果发现剪刀矛_布游戏的胜负情况不合理(x是裁判都会出现矛盾)Q则输出-1。例Q?span>
-2
1 4
-1
0 0
E序之美”-癑ֺ之星E序设计大赛 - 题目
W一题(共四?/span>100分)Q连l正整数Q?/span>10分)
题目描述Q?/span>
一个正整数有可能可以被表示?/span>n(n>=2)个连l正整数之和Q如Q?/span>
15=1+2+3+4+5
15=4+5+6
15=7+8
L写程序,Ҏ输入的Q何一个正整数Q找出符合这U要求的所有连l正整数序列?/span>
输入数据Q?/span>
一个正整数Q以命o行参数的形式提供l程序?/span>
输出数据Q?/span>
?/span>
标准输出上打印出W合题目描述的全部正整数序列Q每行一个序列,每个序列都从该序列的最正整数开始、以从小到大的顺序打印。如果结果有多个序列Q按各序
列的最正整数的大从到大打印各序列。此外,序列不允讔R复,序列内的整数用一个空格分隔。如果没有符合要求的序列Q输?/span>“NONE”?/span>
例如Q对?/span>15Q其输出l果是:
1 2 3 4 5
4 5 6
7 8
对于16Q其输出l果是:
NONE
评分标准Q?/span>
E序输出l果是否正确?/span>
W二题(共四?/span>100分)Q重叠区间大(20分)
题目描述Q?/span>
L写程序,扑և下面“输入数据及格?/span>”中所描述的输入数据文件中最大重叠区间的大小?/span>
对一个正整数nQ如?/span>n在数据文件中某行的两个正整数Q假设ؓA?/span>BQ之_?/span>A<=n<=B?/span>A>=n>=BQ则n属于该行Q如?/span>n同时属于?/span>i?/span>jQ则i?/span>j有重叠区_重叠区间的大是同时属于?/span>i?/span>j的整C数?/span>
例如Q行Q?/span>10 20Q和Q?/span>12 25Q的重叠区间?/span>[12 20]Q其大小?/span>9Q行Q?/span>20 10Q和Q?/span>12 18Q的重叠区间?/span>[10 12]Q其大小?/span>3Q行(20 10)和(20 30Q的重叠区间大小?/span>1?/span>
输入数据Q?/span>
E?/span>
序读入已被命名ؓinput.txt的输入数据文本文Ӟ该文件的行数?/span>1?/span>1,000,000之间Q每行有用一个空格分隔的2个正整数Q这2个正整数?/span>
大小ơ序随机Q每个数都在1?/span>2^32-1之间。(Z于调试,您可下蝲试input.txt文gQ实际运行时我们会用不同内容的输入文g。)
输出数据Q?/span>
在标准输Z打印入数据文件中最大重叠区间的大小Q如果所有行都没有重叠区_则输?/span>0?/span>
评分标准Q?/span>
E序输出l果必须正确Q内存用必M过256MBQ程序的执行旉快好?/span>
W三题(共四?/span>100分)Q字W串替换Q?/span>30分)
题目描述Q?/span>
L写程序,Ҏ指定的对应关p,把一个文本中的字W串替换成另外的字符丌Ӏ?/span>
输入数据Q?/span>
E?/span>
序读入已被命名ؓtext.txt?/span>dict.txt的两个输入数据文本文Ӟtext.txtZ个包含大量字W串Q含中文Q的文本Q以
whitespace为分隔符Q?/span>dict.txtC字W串Q?/span>s1Q与字符Ԍs2Q的对应关系的另一个文本(含中文)Q大U在1万行左右Q每行两个字
W串Q即s1?/span>s2Q,用一?/span>\t或空格分隔?/span>dict.txt中各行的s1没有排序Qƈ有可能有重复Q这时以最后出现的那次s1所对应?/span>s2为准?/span>
text.txt?/span>dict.txt中的每个字符串都可能包含?/span>whitespace之外的Q何字W?/span>text.txt中的字符串必ddict.txt
中的?/span>s1完全匚w才能被替换。(Z于调试,您可下蝲试text.txt?/span>dict.txt文gQ实际运行时我们会用不同内容的输入文g。)
输出数据Q?/span>
在标准输Z打印text.txt?/span>dict.txt替换后了的整个文本?/span>
评分标准Q?/span>
E序输出l果必须正确Q内存用越越好,E序的执行时间越快越好?/span>
W四题(共四?/span>100分)Q低频词qoQ?/span>40分)
题目描述Q?/span>
L写程序,从包含大量单词的文本中删除出现次数最的单词。如果有多个单词都出现最的ơ数Q则这些单词都删除?/span>
输入数据Q?/span>
E序d已被命名?/span>corpus.txt的一个大数据量的文本文gQ该文g包含英文单词和中文单词,词与词之间以一个或多个whitespace分隔。(Z于调试,您可下蝲试corpus.txt文gQ实际运行时我们会用不同内容的输入文g。)
输出数据Q?/span>
在标准输Z打印删除?/span>corpus.txt中出现次数最的单词之后的文本(词与词保持原来的序Q仍以空格分隔)?/span>
评分标准Q?/span>
E序输出l果必须正确Q内存用越越好,E序的执行时间越快越好?/span>
W一题(׃?span>100分)站点l计Q?span>50分)
题目描述Q?span>
一?span>Internet站点集合Q可以用如下的方式来描述站点和站点之间的链接引用关系Q?span>
s 1 2 3 4
1 / 4 0 3
2 3 / 4 5
3 2 2 / 2
4 6 1 4 /
其中?span>s(site)同行和同列的数字都表C站点号Q其他每个数字表CZ个站点到另一个站
点的文本链接数。如果站?span>A有到另一个站?span>B的直接链接或间接Q指通过一个或多个
直接链接Q链接,则称站点A有到站点B的访问关p,或称站点B可以被站?span>A讉K到。例
如,上面描述了一个有4个站炚w接关pȝ站点集合Q第一?span> / 4 0 3 表示站点1到站?span>
1Q?span>2Q?span>3Q?span>4的超文本链接数?span>
L写程?span>:
1Q?一个有N个站点的集合划分成满下面所有条件的站点子集Q这些子集的unionl?span>
成了?span>N个站炚w合)Q?span>
a) 当Q一子集中的站点数大?span>1Ӟ该子集内臛_存在一个站Ҏ到该子集内所?span>
其他站点的访问关p;
b) 当Q一子集中的站点数大?span>1Ӟ该子集内的Q一站点臛_可以被该子集内的?span>
一站点讉K刎ͼ
c) 两个不同子集中的L两个站点之间不存在Q何访问关pR?span>
2Q?裁减q些子集内的站点之间现有的链接关p,使得被裁减后的各子集内的站点依然
可以满上述所有条Ӟ同时使得子集内的站点之间的链接L相加之和为最?span>
假如上面的站炚w合是q?span>N个站炚w合中的一个子集,它满了条ga)Q?span>4可以讉K?span>3Q?span>
也可以访问到2?span>1Q也满了条?span>b)Q站?span>4可以被站?span>3讉K刎ͼ{等。对该站炚w?span>
q行裁减使其仍然满条ga?span>bQƈ使得光接L之和为最的l果为:
s 1 2 3 4
1 / 0 0 0
2 0 / 0 0
3 2 0 / 2
4 0 1 4 /
q里Q站?span>4可以讉K到站?span>3?span>2Q站?span>4也可以访问到站点1Q通过站点3间接讉KQ;
此外Q站?span>3可以讉K到站?span>4Q最链接L相加?span>2Q?span>2Q?span>1Q?span>4=9?span>
输入数据Q?span>
E序d已被命名?span>sites.txt的完全如上所C的N*N矩阵的输入数据文本文ӞN不大?span>
10万(N即ؓ行数和列敎ͼQ输入文件的每一行的列和列之间用一?span>\\t分隔Q行和行?span>
间用\\n分隔?span>
输出数据Q?span>
按行输出满题目要求的每个子集内的站Ҏ以及裁减后的最链接L之和Q数和数
之间都以一个空格分隔。如上述子集和最链接L为:
1 2 3 4 9
如果输入数据无满题目要求的子集存在Q则输出NONE?span>
评分标准Q?span>
在结果正的前提下,会考虑E序的运行时间。我们会用两个不同的输入数据文gQ一
个简单一个复杂)q行试Q简单的输入数据产生的程序输出结果如果正,莯题满
分的30%?span>15分(不处理运行时_除非因程序错误引L时q行Q;复杂的输入数?span>
产生的程序输出结果如果正,?span>50%?span>25分,q行旉满分?span>20%?span>10分,按各自程?span>
的运行时间在所有参赛选手的程序的q行旉中所占位|获得相应比例。请仔细阅读q?span>
遵守"输入数据"?span>"输出数据"中的格式要求Q如不符合要求,我们的自动评分程序可?span>
会判定程序不正确?span>
W二题(׃?span>100分)决策pȝQ?span>50分)
题目描述Q?span>
一个智能决{系l可以由规则库和事实库两部分l成Q假定规则库的Ş式ؓQ?span>
Ri C1 & C2 & … & Cn->A
表示在条?span>C1Q?span>C2Q?span>… ?span>Cn都满的前提下,l论A成立Q即采取行动AQ;Ri表示q是
规则库中的第i条规则。事实库则由若干为真的条Ӟ卛_题)所l成?span>
对一个新的待验证的命?span>QQ可使用数据驱动或目标驱动两U推理方式之一Q来认它是
否可由某规则库和事实库推出:
1Q?数据驱动的推理是指从事实库开始,每次试图发现规则库中某条能满x有条件的
规则Qƈ其l论作ؓ新的事实加入事实库,然后重复此过E,直至发现Q是一个事实或
没有M新的事实可被发现Q?span>
2Q?目标驱动的推理是指从目标假设Q出发Q每ơ试囑֏现规则库中某条含该假讄?span>
则,然后该规则的前提作为子目标Q确认这些子目标是否和事实库中的事实相匹配,
如果没有全部匚wQ则重复此过E,直至发现新的子目标都为真或不能再验证子目标是
否ؓ真?span>
例如Q一个规则库为:
R1 X & B & E -> Y
R2 Y & D -> Z
R
事实库ؓQ?span>
A
B
C
D
E
如果想知道命?span>Z是否为真Q数据驱动的推理是从A B C D E开始,依次匚w规则R3Q得
到新事实XQ,R1Q得到新事实YQ和R2Q得?span>Z为真的事实;目标驱动的推理是从假讄
?span>Z开始,依次匚w规则R2Q得到新的子目标YQ,R1Q得到新的子目标XQ和R3Q得到假
?span>Z为真的结论?span>
L写程序正、高效的实现q两U推理方式?span>
输入数据Q?span>
E序需要两个命令行参数Q?span>
1Q?span> <推理方式>Q?span>data|goalQ分别表C程序应采用数据驱动的推理或目标驱动的推理;
2Q?span> <命题>Q如Z?span>
此外Q程序还需d已被命名?span>rules.txt的规则库和已被命名ؓfacts.txt的事实库?span>
规则库中的规则可能在千量U,?span>R1,R2,R3…依次按行排列的,每行一条规则,每条?span>
则都?span>Ri C1 & C2 & … & Cn->A的Ş式表C,Ri?span>C1之间?span>1个或多个I格Q?span>Ci?span>&?span>
_Cn?span>->之间Q以?span>->?span>A之间可以?span>0或多个空根{事实库中的各事实之间用1?span>\\n
隔开Q每行一个事实?span>
输出数据Q?span>
如果Z能被推理为真Q则输出Q?span>
TRUE <推理方式Q?span>data?span>goal> <用空格隔开的规则序列:以在所输入的推理方式下Q推
命题为真的规则被Ȁzȝ序排列>
例如Q?span>TRUE goal R2 R1 R3
如果Z不能被推理ؓ真,输出Q?span>
UNCERTAIN
评分标准Q?span>
在结果正的前提下,会考虑E序的运行时间。我们会用两l不同的输入数据文gQ一
个简单一个复杂)q行试Q简单的输入数据产生的程序输出结果如果正,莯题满
分的20%?span>10分(不处理运行时_除非因程序错误引L时q行Q;复杂的输入数?span>
产生的程序输出结果如果正,?span>40%?span>20分,q行旉满分?span>40%?span>20分,按各自程?span>
的运行时间在所有参赛选手的程序的q行旉中所占位|获得相应比例。两U推理方?span>
各占一半的分数。请仔细阅读q?span>"输入数据"?span>"输出数据"中的格式要求Q如不符?span>
要求Q我们的自动评分E序可能会判定程序不正确?/span>
题目描述Q?/span>
八方块移动游戏要求从一个含8个数字(?/span>1-8表示Q的方块以及一个空格方块(?/span>0表示Q的3x3矩阵的v始状态开始,不断Ud该空格方块以使其和相ȝ方块互换Q直臌到所定义的目标状态。空格方块在中间位置时有上、下、左、右4个方向可UdQ在四个角落上有2个方向可UdQ在其他位置上有3个方向可Ud。例如,假设一?/span>3x3矩阵的初始状态ؓQ?/span>
8 0 3
2 1 4
7 6 5
目标状态ؓQ?/span>
1 2 3
8 0 4
7 6 5
则一个合法的Ud路径为:
8 0 3 8 1 3 8 1 3 0 1 3 1 0 3 1 2 3
2 1 4 => 2 0 4 => 0 2 4 => 8 2 4 => 8 2 4 => 8 0 4
7 6 5 7 6 5 7 6 5 7 6 5 7 6 5 7 6 5
另外Q在所有可能的从初始状态到目标状态的Ud路径中,步数最的路径被称为最短\径;在上面的例子中,最短\径ؓ5。如果不存在从初试状态到目标状态的M路径Q则U该l状态无解?/span>
误?strong>有效?/strong>Q细节请见评分规则)法扑ֈ从八方块的某初试状态到某目标状态的所有可能\径中的最短\径,q用C/C++实现?/span>
输入数据Q?/span>
E序需d已被命名?/span>start.txt的初始状态和已被命名?/span>goal.txt的目标状态,q两个文仉?/span>9个数字组成(0表示I格Q?/span>1-8表示8个数字方块)Q每?/span>3个数字,数字之间用空格隔开?/span>
输出数据Q?/span>
如果输入数据有解Q输Z个表C最短\径的非负的整敎ͼ如果输入数据无解Q输?/span>-1?/span>
自测用例Q?/span>
如果输入为:start.txt?/span>goal.txtQ则产生的输出应为:
5
又例Q如果用
7 8 4
3 5 6
1 0 2
替换start.txt中的内容Q则产生的输出应为:
21
评分规则Q?/span>
1Q我们将首先使用和自用例不同的10?/span>start.txt以及相同?/span>goal.txtQ每个测试用例的q行旉在一?/span>Intel Xeon 2.80GHz 4 CPU/
2Q每个选手的dQ精到数点后6位)=10U钟内能产生正确l果的测试用例数?/span>x10+Q?/span>1/产生q些正确l果的测试用例的q_q行毫秒)Q?/span>
3Q如果按此评分统计仍不能得出d赛将军_的一、二、三{奖p九名获奖者,我们先?/span>N=2Q然后重复下q过E直至生最高的9位得分:用随机生成的另外10个有解的start.txt再做试Qƈ对这10*N个测试用例用2Q中公式重新计算dQ?/span>N++?/span>
[1]面向机器的、面向问题的 [2]源、目?span style="mso-spacerun: yes"> [3]\?单个
[4]帔R、保留字 [5]赋倹{表辑ּ [6]一、main
[7]/*?/ [8]机器、高U?span style="mso-spacerun: yes"> [9]Run、ctrl+F9
[10]汇编、二q制?span style="mso-spacerun: yes"> [11]ASCII?5 [12]\、\x
[13]控制W、{?span style="mso-spacerun: yes"> [14]字母、下划线 [15]英文字母、数?/font>
[16] main、main [17]1个、若qӀ[18]序l构、分支结?/font>
[19] mainQ)函数、存储单?[20]C、OBJ [21]Q、换?/font>
[22]~辑、编?/font>
W二?span lang="EN-US"> 基本数据cd和运?o:p>
[1] 2? [2] 1? [3]#define W号帔R 字符?span style="mso-spacerun: yes"> 、预定义标识W?/font>
[4]自动型、auto [5] unsigned int、double [6]存储cdW?数据cdW?
[7]++?amp;& [8]8?1110000 [9]1?
[10]1? [11]1.0? [12] ?/span> 5 ?/span> 5
[13]X>20 && X<30、x>30||x<20 [14] a/(b*c)?.5
[15]关系、逻辑 [16]赋倹{?= [17]b=b*(a+2) 、c=b
[18]逻辑、整?span style="mso-spacerun: yes"> [19]3?.333333 [20]1?
[21]1? [22]6,5 ?,9 [23]2?
[24]1? [25]1?0 [26]2?
[27]0? [28]1? [29]1?1
[30]-264,2 [31]4.2000000?.2000000
[32] 8? [33] -1?5535 [34]ffff ?1
[35] 2,1 [36]6,8,6,7 [37]n=1
[38]1 [39]n=-4 [40]x=3,a=2,b=3
[41] 0
[42]
2:102
3:9
4:127
5:0,0,-1
[43]
1:0
2:0
3:0
4:1
[1]3.540 [2]###a=26Qb=13Qc=19
[3]if(a<=b) {x=1; printf("#### x=%d\n",x);}
else {y=2
Q?span lang="FR">printf("**** y=%d\n",y);}
[4]10 [5](x%i==0) [6]dec:-1,oct:177777,hex:ffff,unsigned:65535
[7]dec:1,oct:1,hex:1,unsigned:1 [8]dec:65,oct:101,hex:41,ASCII:A
[9]3.141593,3.1416,3.142 [10]3.500000,3.5 [11]31.415320,31.415
[12]c=K [13]a=1,b= ,c=2 [14]a=12,b=345 [15]A
[16]n=64 [17]x=^^^1.23,y=^^50.00 [18]end
[19]d=20 [20]s=2,t=3
[21]
first
third
[22]
y=0?span lang="FR" style="mso-ansi-language: FR">y=5?span lang="FR" style="mso-ansi-language: FR"> y=10?span lang="FR" style="mso-ansi-language: FR">y=5
");break; }
default:printf("&");
}
printf("\n");
}
[23]#& [24]s=7
[25]
*
**
***
****
[26]
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
[27]
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
[28]
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
[29]sum=33 [30]-200 2500、i=-200,j=2500
[31]x=127,x= 127%-06d,x=$%06d,x=%%06d\n",x,x,x,x,x);
[32]x=127,x=127 ,x=$127 ,x=$000127,x=%06d
[33](a==b)||(a<c)?x>4)||(x<-4)
[34]1
[35]
3
");
case 2: printf("*");break;
default: printf("#");
}
}
[36]*# [37]5? [38]-1
[39]11 [40]d=1.0、k<=n [41]x>=0?x<amin
[42]1 [43]7.28 101.298AB
[1]0? [2]0? [3]#include<stdio.h>?include<string.h>
[4]k=p; [5]k、j=j-1 [6]n/base、d
[7]str= Language [8]str= Language Programming
[9]s=1234 [10]123 [11]s=15
[12]s=45 [13]place=6 [14](1,1)=-5
[15]W?个元?1,3)值是-3
[16]-9是第6个元?span style="mso-spacerun: yes"> [17]4, some string * test
[18] ?/span> string ?/span> '\0' ?/span> str-- ?/span> string
[19]9? [20]12 [21]-850,2,0
[22]k=p、k [23](c=getchar())!='#'、num[c-'A']+=1;
7.5
#define N 5
main()
{int a[N]={8,6,5,4,1},i,temp;
for(i=0;i<N/2;i++)
{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
for(i=0;i<N;i++)
printf("%4d",a[i]);
}
7.8
#define N 10
#define M 10
main()
{int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;
scanf("%d,%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
flag2=0;
for(i=0;i<n;i++)
{max=a[i][0];
for(j=0;j<m;j++)
if(max<a[i][j])
{max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;k<n&&flag1;k++)
if(max>a[k][maxj])flag1=0;
if(flag1)
{ printf("\na[%d][%d]=%d\n",i,maxj,max);
flag2=1;
}
}
if(!flag2) printf("NOT");
}
7.10
main()
{int i,j,uppn,lown,dign,span,othn;
char text[3][80];
uppn=lown=dign=span=othn=0;
for(i=0;i<3;i++)
{gets(text[i]);
for(j=0;j<80&&text[i][j]!='\0';j++)
{if(text[i][j]>='A'&&text[i][j]<='Z')
uppn++;
else if(text[i][j]>='a'&&text[i][j]<='z')
lown++;
else if(text[i][j]>='0'&&text[i][j]<='9')
dign++;
else if(text[i][j]==' ')
span++;
else
othn++;
}
}
for(i=0;i<3;i++)
printf("%s\n",text[i]);
printf("uppn=%d\n",uppn);
printf("lown=%d\n",lown);
printf("dign=%d\n",dign);
printf("span=%d\n",span);
printf("othn=%d\n",othn);
}
一?/span>
1
11-20 CDDCB DCDBA
21-30 BCBCA AADCD
31-40 ABBAA DDCCB
二?/span>
1. d?/span>
2. 序l构、选择l构、@环结?/span>
3.x>=0 ( ?/span> !(x<0) {?/span> ) x<min
4.10
5.b=i+1
6. i<10( ?/span> i<=9) j%3!=0
三?/span>
1.52
2.66877
3.a=8
main()
{ long int num;
int indiv,ten,hundred,thousand,ten_thousand,palce;/*分别代表个位,十位,百位,千位,万位和位?/
printf("please input a integer(0-99999):");
scanf("%ld",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
palce=3;
else if(num>9)
place=2;
else
place =1;
printf("place=%d\n",place);
ten_thousand=num/10000;
thousand=(num-ten_thousand*10000)/1000;
hundred=(num-ten_thousand*10000-thousand*1000)/100;
ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;
switch(place)
{case 5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv);
printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv);
printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d\n",hundred,ten,indiv);
printf("%d,%d,%d\n",indiv,ten,hundred);
break;
case 2:printf("%d,%d\n",ten,indiv);
printf("%d,%d\n",indiv,ten);
break;
case 1:printf("%d\n",indiv);
printf("%d\n",indiv);
}
}
1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的gؓ0。( Q?/p>
2、int (*ptr) (),则ptr是一l数l的名字。( Q?/p>
3、指针在M情况下都可进?gt;,<,>=,<=,==q算。( Q?/p>
4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int cd。( Q?/p>
5?define print(x) printf(Qthe no, Q?xQ?is Q?
二、填I题Q共30分)
1、在windows下,写出q行l果Q每I?分,?0分?/p>
char str[ ]= QHelloQ?
char *p=str;
int n=10;
sizeof(str)=( )
sizeof(p)=( )
sizeof(n)=( )
void func(char str[100])
{ }
sizeof(str)=( )
2、void setmemory(char **p, int num)
{ *p=(char *) malloc(num);}
void test(void)
{ char *str=NULL;
getmemory(&str,100);
strcpy(str,QhelloQ?;
printf(str);
}
q行test函数有什么结果?Q ?Q?0?/p>
3、设int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf(Q?d,%dQ?*ptr,*(++ptr));
( ) 10?/p>
二、编E题Q第一题20Q第二小?0分)
1、?不用库函数Q编写函数int strcmp(char *source, char *dest)
相等q回0Q不{返?1Q?/p>
2、?写一函数int fun(char *p)判断一字符串是否ؓ回文Q是q回1Q不是返?Q出错返?1