您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 北大计算概论作业4及答案
首先可以根据错误类型作出大致的判断:譬如PresetationError,这个说明基本是正确答案了,不过中间输出的时候多了空格回车这类的RuntimeError,这个一般是数组越界导致的好像OutputLimitexceed这个可能是输入多组数据的判断有问题,或者哪里输出了多余的东西导致输出过多poj网站的FAQ都有说明的普遍情况是WrongAnswer想各种数据测试譬如3180m-n这道题目,我能想到的只有mnm==nm-n的结果前面有冗余的0需要去掉数据大部分是随机生成的,有些是手动调整,为了达到上面这三条的测试。随便试验能找到bug比较少,还是努力让自己想全面一点比较好。20071026一、给定一个二维(5*5)数组,求鞍点所在的位置。鞍点是一个元素,它是所在行的最大值,并且是所在列的最小值(第4行第1列的元素就是鞍点,值为8)。找到鞍点,则输出行和列以及鞍点的值。不存在鞍点时,要输出“notfound”。此题提交给助教。(假设每行只有一个最大的值,每列只有一个最小值)。。inta[5][5]={11,3,5,6,9,12,4,7,8,10,10,5,6,9,11,8,6,4,7,2,15,10,11,20,25};voidf1(){inta[5][5]={11,3,5,7,9,12,4,6,8,10,10,3,6,9,11,8,6,4,7,2,15,10,15,20,25};inti,j,k,max,column,flag=0;for(i=0;i5;i++){for(j=0;j5;j++)coutsetw(4)a[i][j];cout\n;}for(i=0;i5;i++){max=a[i][0];column=0;for(j=0;j5;j++)if(a[i][j]max){max=a[i][j];column=j;}for(k=0;k5;k++)if(a[k][column]a[i][column])break;//a[i][column]是当前行最大的if(j==5){cout第i+1行、,第column+1列元素a[i][column]是鞍点endl;flag=1}}if(!flag)cout“notfound”endl;}二、校田径运动会上,A,B,C,D,E分获100米(1),400米(2),跳高(3),跳远(4)和三级跳冠军(5)甲:B获得三级跳冠军,D获得跳高冠军乙:A获的百米冠军,E获得跳高冠军丙:C获得跳远冠军,D获得四百米冠军丁:B获得跳高冠军,E获得三级冠军情况是每个人说对一句,说错一句,问A,B,C,D,E分别获得了哪项冠军?voidf2(){intA,B,C,D,E,Jia,Yi,Bing,Ding;charprogram[6][25]={,100m,400m,jumphigh,jumplong,threestepjumplong};for(A=1;A=5;A++)for(B=1;B=5;B++)if(A!=B)for(C=1;C=5;C++)if((C!=A)&&(C!=B))for(D=1;D=5;D++)if((D!=A)&&(D!=B)&&(D!=C))for(E=1;E=5;E++)if((E!=A)&&(E!=B)&&(E!=C)&&(E!=D)){Jia=(B==5)+(D==3);Yi=(A==1)+(E==3);Bing=(C==4)+(D==2);Ding=(B==3)+(E==5);if(Jia==1&&Yi==1&&Bing==1&&Ding==1){coutA=program[A]endl;coutB=program[B]endl;coutC=program[C]endl;coutD=program[D]endl;coutE=program[E]endl;}}}三、输入一个英文句子,长度不超过40个字符。编写程序,输出句子中最长的一个单词。此题提交ACM,题号3179,不需要提交给助教#includeiostreamusingnamespacestd;intmain(){constintstrSize=200;inti,word=0,max=0,count=0,p,len;charstr[strSize+1];while(cin.getline(str,strSize+1)){len=strlen(str);word=0;max=0;count=0;for(i=0;i=len;i++){if((str[i]=='')||(str[i]==',')||(str[i]=='.')||(str[i]=='\0')){if(word==1)//分隔符前面是字符,则结束一个单词{if(count=max)//当前单词长度更长{max=count;p=i-count;//p记录最长单词的起始位置}}word=0;count=0;//一个单词处理完毕。}else{count++;word=1;//读到一个字符,长度加1}}for(intj=0;jmax;j++)//从起始位输出最长的字符coutstr[p+j];coutendl;}}四、编写一个程序,输入是两个无符号整数m和n(假定mn).计算并输出m和n的和(其中m和n最多可以是200位十进制数,以字符形式输入)此题提交ACM,题号3180,不需要提交给助教#includeiostream#includecstringusingnamespacestd;intmain(){constintMAX_LEN=200;intan1[MAX_LEN];intan2[MAX_LEN];charseLine1[MAX_LEN+1];charseLine2[MAX_LEN+1];while(cin.getline(seLine1,MAX_LEN+1)){cin.getline(seLine2,MAX_LEN+1);intnLen1=strlen(seLine1);intnLen2=strlen(seLine2);memset(an1,0,sizeof(an1));memset(an2,0,sizeof(an2));inti,j=0;for(i=nLen1-1;i=0;i--)an1[j++]=seLine1[i]-'0';//将字符数组1变成整数数组,并倒置j=0;for(i=nLen2-1;i=0;i--)an2[j++]=seLine2[i]-'0';//将字符数组2变成整数数组,并倒置intsign=0;//初值假设结果为正数i=strcmp(seLine1,seLine2);if(i==0)//两个数相等,输出0{cout0endl;continue;}i=nLen1=nLen2?(nLen1-1):(nLen2-1);//定位较长的数组的最高位while(an1[i]==an2[i])i--;//从最高位,找到第一个不相等的两个数if(an1[i]an2[i])//被减数小于减数,互换元素{sign=1;intt;for(i=0;i=nLen2-1;i++){t=an1[i];an1[i]=an2[i];an2[i]=t;}}for(i=0;iMAX_LEN;i++)//直接按位相减{if(an1[i]=an2[i]){an1[i]-=an2[i];}else{an1[i]+=10;an1[i+1]--;//;//这个地方可能会小于0,因此数组要整数。an1[i]-=an2[i];}}if(sign==1)//是负数,先输出负号cout-;i=MAX_LEN-1;while(an1[i]==0)i--;//找到第一个不为0的位for(;i=0;i--)coutan1[i];//输出每一位数coutendl;//ACM需要}}3179的部分测试数据Fordetailedinformationontheuniversitygraduateprograms,pleaseusethelistbelowtoviewthewebsiteofthespecificacademiccollegeordepartmentthatinterestsyou.abcd..........You,agoodman,isnotbad.Hello.RobertE.ChambersJr.,whokilledayoungwomaninCentralParkin1986,isnowaccusedofdealingcocainewithhiscompanionfromaMidtownapartment.Heisreallyabadguyinmyopinion...........You,3180的部分测试数据z5555z5554z9999z4567z0z1z47366160654413407880568388379428403170145870123781677450124969190655654154586931753445801796053958984377544538474996479982005z11840536408284598554169714235348851697216919690108976971059719870357177064815863658792410689262855007492377365883860903624569z652502026411765071877762775977302767628374781493295642684305954698056563070896968963965086765937075784105083735306z337138144832768792165276275260333248480697188730005257403892948689044734018601901309228130804064654673055513547853z9032z6761z271480392629626291126732171008789945622332652561651102209696073258512764422846021267927556534062411213306082219288908336940222772135122043572194z320639194772681272363363611065329482018990708850040773017252377496870407221944039948701190129789951236056145044954605009720434832582535595185168z64873627134847026974648922537027316155995786578773593658385163539667z66070329210194160498420073536422452147479586882587515135794988329347z44410342245761374356860423710292120434496287830968680613905835803070624541853431843865658903946900423177059249872440424425038130065615263972229270489597887078319z48490587233466228565130584608423575720514271477262996692662288794217955900626606145002942701174751021672369071111563762628247534683088057617614098092026677845673z206981066256082338150532352311
本文标题:北大计算概论作业4及答案
链接地址:https://www.777doc.com/doc-10661555 .html