




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、A + B题目描述: 读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.输入: 测试输入包含若干测试用例,每个测试用例占一行,格式为A + B =,相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.输出: 对每个测试用例输出1行,即A+B的值.样例输入: one + two =three four + five six =zero seven + eight nine =zero + zero =样例输出: 39096答案:#include #include using namespace std;int toInteger(string A) if(A=one) return 1; else if(A=two) return 2; else if(A=three) return 3; else if(A=four) return 4; else if(A=five) return 5; else if(A=six) return 6; else if(A=seven) return 7; else if(A=eight) return 8; else if(A=nine) return 9; else if(A=zero) return 0; else return -1; int main() string s1000; int i=0; while(cinsi) if(si=&si-1=zero&si-3=zero) break; i+; for(int j=0;j!=i;) int num1=0,num2=0; int sum=0; while(sj!=+) if(toInteger(sj)=-1) return 0; else num1=num1*10+toInteger(sj); j+; j+; while(sj!=) if(toInteger(sj)=-1) return 0; else num2=num2*10+toInteger(sj); j+; j+; sum=num1+num2; if(sum=0)return 0; coutsumendl; return 1;之二:#include#includeint StoInt(char s) if(strcmp(s,zero)=0) return 0; if(strcmp(s,one)=0) return 1; if(strcmp(s,two)=0) return 2; if(strcmp(s,three)=0) return 3; if(strcmp(s,four)=0) return 4; if(strcmp(s,five)=0) return 5; if(strcmp(s,six)=0) return 6; if(strcmp(s,seven)=0) return 7; if(strcmp(s,eight)=0) return 8; if(strcmp(s,nine)=0) return 9; int main() char a50,b50; int a110,b110,top1=-1,top2=-1,i,a2,b2; while(scanf(%s,a)!=EOF) if(strlen(a)=1&a0=+) while(scanf(%s,b)!=EOF) if(strlen(b)=1&b0=) a2=b2=0; for(i=0;i=top1;i+) a2=a2*10+a1; for(i=0;i=top2;i+) b2=b2*10+b1; if(a2=b2&a2=0) break; else top1=top2=-1; printf(%dn,a2+b2); break; else b1+top2=StoInt(b); else a1+top1=StoInt(a); if(a2=b2&a2=0) break; return 0; AC代码。纯纯的C之三:1. #include2. #include3. #include4. #include5. #include6. #include7.8. using namespace std;9. int str2int(string str)10. 11. if (str=zero) return 0;12. else if (str=one) return 1;13. else if (str=two) return 2;14. else if (str=three) return 3;15. else if (str=four) return 4;16. else if (str=five) return 5;17. else if (str=six) return 6;18. else if (str=seven) return 7;19. else if (str=eight) return 8;20. else if (str=nine) return 9;21. else return -1;22. 23.24. int main()25. 26. / fstream cin(1010.txt);27. string s1010;28. int i=0,j;29. while (cinsi)30. 31. if (si!=)32. 33. i+;34. continue;35. 36. j=0;37. int num1=0,num2=0;38. while (sj!=+)39. 40. num1=num1*10+str2int(sj);41. j+;42. 43. j+;/循环出来一定是遇到了“+”,再j+就到了第二个操作数上了44. while (sj!=)45. 46. num2=num2*10+str2int(sj);47. j+;48. 49. if (num1+num2!=0)50. 51. i=0;/i重置0,准备为下一轮做准备52. coutnum1+num2endl;53. 54. else55. 56. break;57. 58. 59. return 0;60. 之四:1. /stl map,直接键值映射,简单题2.3. #include 4. #include 5. #include 6.7. using namespace std;8.9. string str;10.11. string Num10 = zero,one,two,three,four,five,six,seven,eight,nine;12. mapQ;13.14. void init()15. 16. for(int i = 0; i10; i+)17. QNumi = i;18. 19.20. int main()21. 22. int i,a,b,len,flag;23. /freopen(in.txt,r,stdin);24. init();25. while(getline(cin,str)26. 27. a = b = flag = 0;28. len = str.size();29. for(i = 0; ilen; i+)30. 31. string op = ;32. while(stri!= &ilen)33. 34. op+=stri;35. i+;36. 37. if(op0 = +|op0 = =)38. 39. flag = 1;40. continue;41. 42. if(!flag)a = a*10+Qop;43. else b = b*10+Qop;44. 45. if(a = 0 & b = 0)break;46. else 47. couta+bendl;48. 49. return 0; 50. 之五:#include using namespace std;int strtoint(string a) if(a = zero) return 0; if(a = one) return 1; if(a = two) return 2; if(a = three) return 3; if(a = four) return 4; if(a = five) return 5; if(a = six) return 6; if(a = seven) return 7; if(a = eight) return 8; if(a = nine) return 9; int main() string s10;int i = 0,sum1,sum2; while(cinsi) if(si != =) i+; continue; sum1 = 0; sum2 = 0; i = 0; while(si != +) sum1 = sum1 * 10 + strtoint(si); i+; i+; while(si != =) sum2 = sum2 * 10 + strtoint(si); i+; if(sum1 = 0 & sum2 = 0) break; coutsum1+sum2endl; i = 0; 之六:#include#include#include#include#includeusing namespace std;int trans(char temp) switch(temp0) case z: return 0; case o: return 1; case t: if(temp1 = w) return 2; else return 3; case f: if(temp1 = o) return 4; else return 5; case s: if(temp1 = i) return 6; else return 7; case e: return 8; case n: return 9; int main() char A10, B10, temp10; string str; char s1; int a, b; int i, j; size_tp, q; getline(cin, str); while(str.length() / p = str.find(+); q = str.find(=); memset(temp, , 10*sizeof(char); memset(A, , 10*sizeof(char); memset(B, , 10*sizeof(char); int count_t = 0, count_a = 0, count_b = 0; for(i=0; i(int)p; i+) if(str != ) tempcount_t+ = str; else Acount_a+ = (char)trans(temp) + 48; count_t = 0; count_t = 0; for(i=(int)(p+2); i(int)q; i+) if(str != ) tempcount_t+ = str; else Bcount_b+ = (char)trans(temp) + 48; memset(temp, , 10*sizeof(char); count_t = 0; a= atoi(A); b = atoi(B); if(a = 0 & b = 0) return 0; else printf(%dn, a+b); getline(cin, str); return 0;之七:#include#include#includeusing namespace std;int change( char s) int sum=0,i=0; while(si!=0) if(si=z) sum=sum*10+0; i=i+4; continue; if(si=o) sum=sum*10+1; i=i+3; continue; if(si=t&si+1=w) sum=sum*10+2; i=i+3; continue; if(si=t&si+1=h) sum=sum*10+3; i=i+5; continue; if(si=t&si+1=h) sum=sum*10+3; i=i+5; continue; if(si=f&si+1=o) sum=sum*10+4; i=i+4; continue; if(si=f&si+1=i) sum=sum*10+5; i=i+4; continue; if(si=s&si+1=i) sum=sum*10+6; i=i+3; continue; if(si=s&si+1=e) sum=sum*10+7; i=i+5; continue; if(si=e) sum=sum*10+8; i=i+5; continue; if(si=n) sum=sum*10+9; i=i+4; continue; return sum;int main() char s30; char a30; char b30; int len,i,j,x,y; while(gets(s) len=strlen(s); for(i=0;i30;i+) ai=bi=0; for(i=0,j=0;ilen;i+) if(si=+) break; else if(si!= ) aj=si; j+; i=i+2; for(int k=0;ilen;i+) if(si!= &si!=) bk=si; k+; x=change(a); y=change(b); if(x=0&y=0) break; else coutx+yendl; return 0; 二、最大连续子序列题目描述: 给定K个整数的序列 N1, N2, ., NK ,其任意连续子序列可表示为 Ni, Ni+1, ., Nj ,其中 1 = i = j = K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列 -2, 11, -4, 13, -5, -2 ,其最大连续子序列为 11, -4, 13 ,最大和为20。现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。输入: 测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( K 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。输出: 对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。样例输入: 6-2 11 -4 13 -5 -210-10 1 2 3 4 -5 -23 3 7 -2165 -8 3 2 5 01103-1 -5 -23-1 0 -20样例输出: 20 11 1310 1 410 3 510 10 100 -1 -20 0 0答案:之一:一个贪心算法搞定,求取最大子数列的时间复杂度为O(n)AC了但是有个问题啊,如果我最后用那个cout输出时为什么会提示 格式错误? #include #include using namespace std;int findNextPositive(int *a,int index,int num) for(int j=index;j=0) return aj; return -1; void findTheSubMax(int &max,int &start,int &end,int array,int number) int sum = 0; end = 0; max = 0; int startTest; bool startTestSet = false; start = findNextPositive(array,0,number); if(start = -1) max = 0; start = array0; end = arraynumber-1; return; for(int i=0;inumber;i+) sum += arrayi; if(sum0) if(startTest = findNextPositive(array,i,number) = -1) return; else startTestSet =true; sum = 0; if(maxnum & num) for(int i=0;iai; findTheSubMax(max,start,end,a,num); printf(%d %d %dn,max,start,end); / coutmax start end endl; return 0;之二:1. #include 2.3. int k, a;4. long int sum, max, s, e;5.6. int main()7. 8. while(scanf(%d, &k), k)9. 10. int ts, te;11. scanf(%d, &a);12. sum = a;13. max = a;14. ts = te = s = e = a;15. int ta = a;16. for(int i=1; i0)19. sum += a;20. te = a;21. else22. sum = a;23. ts = te = a;24. 25. if(maxsum)26. s = ts;27. e = te;28. max = sum;29. 30. /三种情况分别讨论31. if(max = 0) printf(0 0 0n);32. else if(max 0) printf(0 %ld %ldn, ta, a);33. else printf(%ld %ld %ldn, max, s, e);34. 35. return 0;36. 之三:我的代码稍微长了点,不过思路也比较简单清晰。1. #include stdio.h2. #include string.h3.4. int A10002;5. int getType(int *A,int n);6.7. int main()8.9. while(true)10. /1.输入 11. int n,i;12. scanf(%d,&n);13. if(n=0)break;14. for(i=1;i=n;i+)15. scanf(%d,&Ai);16. 17. /2.分情况计算并输出18. int pre_sum=0,pre_i=1;19. int max_sum=0,max_i=1,max_tail=1;20. int type=getTyp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年养老服务机构护理人员聘用合同模板
- 2025年度智能家电翻新二手交易合作协议
- 2025年度绿色环保型农膜批发销售合同
- 2025年度电器产品认证与检测服务合同
- 2025版水泥井盖购销合同知识产权保护条款
- 2025版商业综合体消防设施改造项目所需资料清单合同
- 基于大数据的2025年农业温室生产效益优化研究报告
- 2025版汽车托管租赁服务合同范本解读
- 再生资源与废弃物的绿色转化-洞察及研究
- 增强现实教育出版-洞察及研究
- 培训钉钉课件
- 新建洞室储气库压缩空气储能系统的经济性及成本分析
- 艺康servsafe培训课件
- 砖厂职业危害管理制度
- 肝功能障碍患者的麻醉管理要点
- 2025年粮油仓储管理员(高级)职业技能鉴定考试练习题库(含答案)
- 【课件】新高三启动主题班会:启航高三逐梦未来
- 历史 2024-2025学年部编版七年级历史下学期期末问答式复习提纲
- 2025年中国邮政集团有限公司北京分公司招聘笔试冲刺题(带答案解析)
- 学校物业服务应急事件处理预案
- 单位车辆管理委托协议书示例3篇
评论
0/150
提交评论