首页下载资源后端一些程序设计训练相关的题目,及其报告

ZIP一些程序设计训练相关的题目,及其报告

wcj_______71.94KB需要积分:1

资源文件列表:

程序设计训练报告.zip 大约有11个文件
  1. 程序设计训练报告.docx 66.68KB
  2. 合法的括号串.cpp 545B
  3. 魔咒词典.cpp 1.14KB
  4. 打牌.cpp 1.15KB
  5. Maya历法.cpp 1020B
  6. 欧洲冠军联赛.cpp 1.09KB
  7. 最大报销额.cpp 894B
  8. 拼写检查.cpp 1.6KB
  9. 数码管.cpp 723B
  10. 相同生日.cpp 950B
  11. 电话号码.cpp 1.32KB

资源介绍:

程序设计训练报告,这个文件中有10道题,有难有易,题目,代码,问题分析,算法设计,具体代码设计,样例输出……都有涉及,如果想要找一些相关的题目来增加一些知识点,或者对程序设计题多加了解,那么可以下载来看一下,对你都是有好处的,这里的代码都经平台检测过,是正确的,可以放心看。其中涉及的知识点都是需要掌握的。
1:数码管
一、问题描
【问题描述】
液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划
都称为一笔,即7有3笔,8有7笔等。对于十个数字一种排列,
做到两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不
能又加又减。比 →3是允许的,7→2不允许。任意输入一组
数,判断是否符合上述规则,注意,1 在右边。
【输入形式】
每行 0~9 的排字之格分-1 作为输
【输出形式】
输出 YES NO
【样例输入】
4 1 0 7 3 9 5 6 8 2
3 5 1 6 2 7 9 0 4 8
-1
【样例输出】
YES
NO
2
二、问题分析及边界条
要处理的问题就是如何判断相邻的两个数字是否可以相互转变,只
要这个问题解决了,本题就迎刃而解了。
三、算法设
这个题我选择的是先把能够相互转换的数字一一列举出来,总归不
是太麻烦,然后将它们存储进字符串 1 中,将输入的数字转换成字
符串,遍历,判断相邻的两个字符是否存在于字符串 1 中,若是则
计上,循环结束后,看计上的数是否等于 9,若是,则这 10 个数字
两两相连的都可以由另一个数字加上几笔或减去几笔组成,输出
YES
四、详细设计(从算法到程序)
1.用字符串 s 来存储可以相互转换的数字,如 0107……注意每个
字符串要以逗号分隔开。
2.在输入的时候将数字转化成字符存储进字符串 str 中,str.push_
b ack ((a+'0'))
3.for()循环遍历字符串 str,截取相邻的两个字符,
str.substr(i,2)
4.如果 s.find(ss)!=s.npos,说明这两个数字可以转化,sum++
5.循环结束后,if(sum==9),输出 YES
五、样例设计与测试
测试样例一
4 1 0 7 3 9 5 6 8 2
3 5 1 6 2 7 9 0 4 8
3
-1
样例输出
YES
NO
4 1 0 7 3 9 5 6 8 2
YES
3 5 1 6 2 7 9 0 4 8
NO
-1
Process exited after 7.651 seconds with return value 0
请按任意键继续. . .
样例测试二
3 2 8 0 9 2 3 1 8 4
0 2 8 4 7 1 9 4 3 7
-1
样例输出
NO
NO
3 2 8 0 9 2 3 1 8 4
NO
0 2 8 4 7 1 9 4 3 7
NO
-1
Process exited after 46.37 seconds with return value 0
请按任意键继续. . .
六、分析与总结
如果想不出其他方法,有时候像这个题一样先把所有情况(前提是不
复杂)列举出来也不失为一个好方法;单个数字转换成字符,+ ‘0’
即可字符截取函数 substr()的用法字符串中 find()函数的
用法,如果找到字符串,表达式为 s.find(ss)!=s.npos
4
2:最大报销
一、问题描
【问题描述】现有一笔经费可以报销一定额度的发票。允许报销的发
票类包括图书A 类)、文B 、差C ),求每
张发票的总额不得超过 1000 元,每张发票上,单项物品的价值不
超过 600 元。现请你编写程序,在给出的一堆发票中找出可以报销的、
不超过给定额度的最大报销额。
【输入形式】测试输入包含若干测试用例。每个测试用例的第 1 行包
含两个正数 Q N其中 Q 是给定的报销额度,NN<=30是发票
张数。随后是 N 行输入,每行的格式为:
m Type_1:price_1 Type_2:price_2 … Type_m:price_m
m Type_i
price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文
字母表示。当 N 0 时,全部输入结束,相应的结果不要输出。
【输出形式】对每个测试用例输出 1 行,即可以报销的最大数额,
确到小数点后 2 位。
【样例输入】
200.00 3
2 A:23.50 B:100.00
1 C:650.00
3 A:59.99 A:120.00 X:10.00
5
1200.00 2
2 B:600.00 A:400.00
1 C:200.50
1200.50 3
2 B:600.00 A:400.00
1 C:200.50
1 A:100.00
100.00 0
【样例输出】
123.50
1000.00
1200.50
二、问题分析及边界条
本题主要就是对数据的处理,如果成功的得到数据,那么剩下的就只
是普通的 0-1 背包问题。
三、算法设
每张发票上的物品数为 m然后输入 m 个字符串,接下来就是对这些
剩下的就是数字字符串了,只需要将其转化成数字即可,同时对照题
目要求,将最终满足题意可以报销的发票上的钱数依次存储进 vector
0-1 *100
看作背包容量,可以报销的钱数*100(对照上面的报销额)看作每个
100+评论
captcha