注:题目来自刘汝佳的《算法竞赛入门经典第2版》,在vjudge选择OJ平台UVA进行提交。必要的时候会写解题思路,简单的题纯粹就做个记录。

3-1 UVA1585

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[81];
int T;
int main()
{cin>>T;int score;while(T--){memset(s,0,sizeof(s));cin>>s;int sum=0;score=0;for(int i=0;i<int(strlen(s));i++){if(s[i]=='O'){score++;sum+=score;}else{score=0;}}cout<<sum<<endl;}return 0;
}

3-2 UVA1586

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
int T;
char s[81];
int book[81];
double weight[15];
double caculate(int a,int b,char ch[])
{int t=0;if(b==a+1||(b>=int(strlen(ch))&&(isalpha(ch[strlen(s)-1])))){return(weight[ch[a]-'A']);}else{for(int i=a+1;i<b;i++){t=t*10+(ch[i]-'0');}return((weight[ch[a]-'A'])*t);}
}
int main()
{memset(weight,0,sizeof(weight));weight[2]=12.01;weight[7]=1.008;weight[13]=14.01;weight[14]=16.00;cin>>T;while(T--){memset(s,0,sizeof(s));memset(book,0,sizeof(book));cin>>s;double sum=0;int j=0;for(int i=0;i<int(strlen(s));i++){if(isalpha(s[i])){book[j++]=i;}}book[j]=strlen(s);for(int i=0;i<j;i++){sum+=caculate(book[i],book[i+1],s);}printf("%.3lf\n",sum);}return 0;
}

3-3 UVA1225

#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int T;
int t;
int n;
int a[10];
int main()
{cin>>T;while(T--){cin>>n;memset(a,0,sizeof(a));for(int i=1;i<=n;i++){int t=i;while(t!=0){a[t%10]++;t=t/10;}}for(int i=0;i<9;i++){cout<<a[i]<<" ";}cout<<a[9]<<endl;}
}

3-4 UVA455

#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int T;
int p;
int i;
int flag;
char s[81];
int main()
{cin>>T;while(T--){memset(s,0,sizeof(s));cin>>s;for(i=1;i<=int (strlen(s));i++){flag=1;if((strlen(s)%i)!=0){continue;}p=strlen(s)/i;for(int j=0;j<i;j++)//i为最小的周期{for(int k=1;k<p;k++){if(s[j]!=s[j+i*k]){flag=0;break;}}if(flag==0){break;}}if(flag==1){break;}}if(T>=1){cout<<i<<endl<<endl;}else{cout<<i<<endl;}}return 0;
}

3-5 UVA227

//Z之前可能没有\n
//相邻两个输出结果之间用空行隔开,最后一个结果之后无空行
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[7][7];
char s[7];
char op[10005];
char po[10005];
char c[10005];
char d[10005];
int flag,k;
int markx,marky;
int w;
//判断是否含0 判断指令是否结束,保存0之前和0之后的字符串
int isend(char b[])
{memset(c,0,sizeof(c));memset(d,0,sizeof(d));w=0;for(int i=0;i<int(strlen(b));i++){if(b[i]=='0'){for(int j=0;j<i;j++){c[j]=b[j];}for(int j=i+1;j<int(strlen(b));j++){d[w++]=b[j];}return 1;}}return 0;
}//判断该字符串中是否含Z,从而判断程序是否结束
int isz(char e[])
{for(int i=0;i<int(strlen(e));i++){if(e[i]=='Z'){return 1;}}return 0;
}//判断指令是否合法
int illegal(char ch)
{if((ch=='A'&&markx==0)||(ch=='B'&&markx==4)||(ch=='L'&&marky==0)||(ch=='R'&&marky==4)){return 1;}else if(ch!='A'&&ch!='B'&&ch!='L'&&ch!='R'&&ch!='\n'&&ch!=' '){return 1;}return 0;
}//执行指令
void does(char ch)
{char t;if(ch=='A'){t=a[markx][marky];a[markx][marky]=a[markx-1][marky];a[markx-1][marky]=t;markx--;}else if(ch=='B'){t=a[markx][marky];a[markx][marky]=a[markx+1][marky];a[markx+1][marky]=t;markx++;}else if(ch=='L'){t=a[markx][marky];a[markx][marky]=a[markx][marky-1];a[markx][marky-1]=t;marky--;}else if(ch=='R'){t=a[markx][marky];a[markx][marky]=a[markx][marky+1];a[markx][marky+1]=t;marky++;}
}
int main()
{k=1;while(gets(s)){if(isz(s)){return 0;}memset(po,0,sizeof(po));memset(op,0,sizeof(op));flag=1;strcpy(a[0],s);for(int i=1;i<=4;i++){gets(s);strcpy(a[i],s);}for(int i=0;i<5;i++)for(int j=0;j<5;j++){if(a[i][j]==' '){markx=i;marky=j;break;}}while(1){gets(op);if(isend(op)){strcat(po,c);break;}strcat(po,op);}if(k>1){cout<<endl;}printf("Puzzle #%d:\n",k++);for(int i=0;i<int(strlen(po));i++){if(illegal(po[i])){flag=0;break;}does(po[i]);}if(flag==0){cout<<"This puzzle has no final configuration."<<endl;}else{for(int i=0;i<5;i++){for(int j=0;j<4;j++){cout<<a[i][j]<<" ";}cout<<a[i][4]<<endl;}}memset(a,0,sizeof(a));if(isz(d)){return 0;}}return 0;
}

后记:题目3-5的格式需要注意:'Z'之前可能没有换行;相邻两个输出结果之间用空行隔开,最后一个结果之后无空行。这里https://www.udebug.com/UVa/227

提供了一些该题的测试用例。另外附上题目3-5的另一位博主的博客:https://blog.csdn.net/qq_41727666/article/details/88781866

习题3-1至习题3-5相关推荐

  1. 编程珠玑——第八章习题10扩展和习题11

    习题10求解的是查找数组中总和最接近于0的子数组. 们可以尝试使用"将x[0...n-1]扩展为x[0...n]"的思想,建立一个累积和表cumSum进行处理.这里假设输入数组为x ...

  2. 高数第七版_习题解答_3-1行列式习题

    习题3-1行列式问题解析 已知f(x),g(x)f(x),g(x)f(x),g(x)连续可导,证明 (f(a)f(b)g(a)g(b))=(b−a)(f(a)f′(ξ)g(a)g′(ξ))\begin ...

  3. 微型计算机技术习题,微型计算机技术课后习题一二三章答案

    . 64.设(SP)=2800H,使(SP)=27FEH的正确指令是 B . A.NEG A B.MOV SP,27FEH C.POP AX D.MOV [SP],27FEH 65.若寄存器AX.BX ...

  4. matlab仿真习题,(MATlab仿真部分习题答案.doc

    (MATlab仿真部分习题答案 [4.1]控制系统结构如图4.1所示 利用MATLAB对以上单位负反馈控制系统建立传递函数: 将第一问中求得的传递函数模型转化为零极点增益形式和状态空间形式. 解:(1 ...

  5. linux思考与实验答案,linux课后习题答案教材课后习题参考答案

    27.下列哪个命令中不会自动产生文件后缀? A. gzip B. tar C. bzip2 D. compr 28.有关归档和压缩命令,下面描述正确的是? A. gzip 命令可解压缩由zip 命令生 ...

  6. matlab习题及答案,MATLAB习题及答案

    习题: 一.填空 1. 清除命令窗口内容的命令是( clc ). 2. 删除工作空间中保存的变量x的命令是( clear x ). 3. 将双精度实数的显示格式设置成15位定点小数格式的命令是( fo ...

  7. 计算机导论模拟测试练习(2018年秋)F. 习题课一 G. 习题课二 H. 跳马

    比较相似我就放在一起写了. 过于真实,开学大家都一窝蜂去,后来去的人就越来越少了.(泛指各种课程,我没去过计导习题课desu) 前面是一个很普通的冒泡泡排序. 需要注意的是第一题要求floorDivi ...

  8. c语言数据类型习题,C语言-数据类型习题及答案.doc

    C语言-数据类型习题及答案.doc 第二章 数据类型,运算符与表达式一选择题1不合法的字符常量是(B).A) t B "A" C) a D)x322.合法的字符常量是(D) .A) ...

  9. c语言构成数组的各个元素,c语言习题六(数组部分)习题及答案.doc

    习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 . A)整型常量 B)整型表达式 C)整常量或整表达式 C)任何类型的表达式2.以下对一维整型数组a的正确说明是 A)i ...

  10. 计算机第二章基础知识习题,计算机基础知识习题.docx

    文档介绍: 第一章计算机基础知识****题一.单项选择题2.最先实现存储程序的计算机是B.A.ENIACB.EDSACC.EDVACD.VNIVA4.开机时显示如下出错信息的含义是B.Non-syst ...

最新文章

  1. win7如何设置某个软件不弹出用户账户控制
  2. Nginx负载均衡+tomcat+session共享
  3. Android Shape使用
  4. 咨询14个CEO,花了20小时,建设顶级数据团队的干货,被疯狂点赞
  5. 62. 不同路径(JavaScript)
  6. J-CUBE Appears at AVATAR Xprize at Geneva 2019
  7. IMU预积分公式推到及代码解析
  8. 0基础python入门书籍 excel_零基础学Python3(23):Excel 基础操作(上)
  9. 第六章 培养感恩的习惯
  10. 基于windows10+Anaconda3+Python搭建配置TensorFlow、Keras、Jupyter Notebook库,下载Kaggle狗猫数据集完成原始数据直接训练和数据增强后训练
  11. php无法加载ssh扩展,php的ssh2扩展正常安装,却无法连接目标主机
  12. 双层优化模型【简述】
  13. arcgis中的重分类
  14. 深耕MySQL - 50道SQL练习题
  15. ORBSLAM3 VIO初始化
  16. 人力资源管理系统HRMS 天下三分 煮酒论英雄
  17. 软件测试工程师必备的27个基础技能
  18. 2021ICPC网络赛第一场【A Busiest Computing Nodes】【D Edge of Taixuan】
  19. 新氧,今天受了点儿伤
  20. 现货白银分析离不开SLV持仓分析

热门文章

  1. Spring系列第10篇:primary可以解决什么问题?
  2. [Python] wxPython 基本控件 (转)
  3. 安装pytorch报错torch.cuda.is_available()=false的解决方法
  4. 微信开发修改button里的字体大小_在微信小程序中如何修改文字大小
  5. 43.10. Google Authenticator - Android Apps on Google Play
  6. adb的安装及环境配置
  7. 安装声卡驱动报错,代码:0xe0000246
  8. 心理测量学信度计算机试题,心理测量学 第三章 信度.doc
  9. 判断三极管是否是NPN与PNP,并判断EBC
  10. 【人工智能项目】机器学习中文垃圾邮件分类任务