2022年第四届全国高校计算机能力挑战赛决赛java编程题
-
资源ID:347451717
资源大小:276.62KB
全文页数:15页
- 资源格式: DOCX
下载积分:0金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
2022年第四届全国高校计算机能力挑战赛决赛java编程题
2022年第四届全国高校计算机能力挑战赛决赛(java)个人解答源码及思路,非评分标准答案。1.在光华集团的一次团建活动中,团建服务公司为光华集团员工设计了一系列闯关游戏,其中有一个关卡是要开启一个神秘通道,要开启神秘通道,游戏参与者需要答对一道题,题目是这样描述的:一个天平的一端放置了重量为N千克的物品,另一端是空的,现在天平旁边放了M个沙袋,其重量各不相同,现在要从M个沙袋中选出若干袋放到天平空的一端上,使天平两端刚好平衡,这样才能开启神秘通道,问有多少种选择沙袋的组合方法。这个问题把光华集团的员工难住了,请你编程序帮助游戏参与者找到正确答案。输入说明:第一行输入两个正整数N和M,N表示天平一端已经放置的物品重量(N<=1000,单位为千克),M表示沙袋数量(M<=50);第二行输入M个以空格分隔的正整数,表示M个沙袋的重量(每个沙袋的重量不超过100千克,M个沙袋重量各不相同)。输出说明:输出一个整数,表示选择若干沙袋使其总重量为N的不同组合方法的数量。输入样例1:12 42 5 7 3输出样例1:2输入样例2:20 54 2 11 3 9输出样例2:2参考源码:1. import java.util.Scanner;2. public class FristProblemFinal 3. public static void main(String args) 4. Scanner sc = new Scanner(System.in);5. int N = sc.nextInt();6. int M = sc.nextInt();7. int array = new intM;8. for (int i = 0; i < M; i+) 9. arrayi = sc.nextInt();10. 11. System.out.println(CalSum(array, N);12. 13.14. static int CalSum(int array, int result) 15. int numberCombinations = 0;16. for (int i = 1; i < 1 << array.length; i+) 17. int sum = 0;18. for (int j = 0; j < array.length; j+) 19. if (i & 1 << j) != 0) 20. sum += arrayj;21. 22. 23. if (sum = result) 24. numberCombinations+;25. 26. 27. return numberCombinations;28. 29. 算法思路:对于M个沙袋,用M位的二进制数来表示,对应的数从1到2M-1(0001到111.1),某位为1,表示当前沙袋被选中。以M=3为例,001表示选中第1个沙袋,010表示选中第2个沙袋,011表示选中第1个沙袋和第2个沙袋,以此类推。将选中的沙袋重量之和与物品重点进行比较,相等则为符合要求的一种组合方式。运行截图:测试用例1(题目输入样例1)测试用例2(题目输入样例2)测试用例32. 临近期末,华园各种课程面临期末考试,为了更准确地了解学生对课程的掌握情况,需要对各班成绩进行统计分析,具体包括:计算班级成绩的平均分和标准差,统计各个分数段(A:90,100,B:81,89,C:71,80,D:61,70,E:0,60)的人数及所占比例。请编写程序,根据输入的某班级某门课的成绩,计算并输出其各种统计信息。标准差计算公式如下:输入说明:第一行输入正整数N,表示班级人数。第二行输入每位同学的分数。输出说明:第一行输出班级平均成绩(保留到小数点后2位)和成绩的标准差(保留到小数点后2位),中间用空格隔开。第二行起输出各个分数段的人数及占比,每个分数段占一行格式为:等级:人数占比。等级用AE的字母表示,占比保留到小数点后两位。输入样例1:2065 78 69 90 87 75 100 94 45 70 73 75 85 69 54 88 60 72 73 82输出样例1:75.20 13.16A:3 15.00%B:4 20.00%C:6 30.00%D:4 20.00%E:3 15.00%输入样例2:1567 80 78 64 90 85 76 56 92 90 86 78 76 85 69输出样例2:78.13 10.13A:3 20.00%B:3 20.00%C:5 33.33%D:3 20.00%E:1 6.67%参考源码:1. import java.text.DecimalFormat;2. import java.util.Scanner;3. SuppressWarnings("ALL")4. public class SecondProblemFinal 5. public static void main(String args) 6. Scanner sc = new Scanner(System.in);7. int fiveLevels = new int5;8. int N = sc.nextInt();9. int eachScrores = new intN;10. int totalScores = 0;11. for (int i = 0; i < N; i+) 12. int currentScore = sc.nextInt();13. totalScores += currentScore;14. eachScroresi = currentScore;15. if (currentScore >= 90) 16. fiveLevels0+;17. continue;18. 19. if (currentScore >= 81) 20. fiveLevels1+;21. continue;22. 23. if (currentScore >= 71) 24.25. fiveLevels2+;26. continue;27. 28. if (currentScore >= 61) 29. fiveLevels3+;30. continue;31. 32. if (currentScore >= 0) 33. fiveLevels4+;34. continue;35. 36. 37. double averageScore = totalScores * 1.0 / N;38. double temp = 0;39. for (int i = 0; i < N; i+) 40. temp = temp + (eachScroresi - averageScore) * (eachScroresi - averageScore);41. 42. temp = temp / N;43. double variance = Math.sqrt(temp);44. double levelA = fiveLevels0 * 1.0 / N 45. double levelB = fiveLevels1 * 1.0 / N 46. double levelC = fiveLevels2 * 1.0 / N 47. double levelD = fiveLevels3 * 1.0 / N 48. double levelE = fiveLevels4 * 1.0 / N 49. DecimalFormat df1 = new DecimalFormat("0.00");50. DecimalFormat df2 = new DecimalFormat("0.00%");51. System.out.println(df1.format(averageScore) + " " + df1.format(variance);52. System.out.println("A:" + fiveLevels0 + " " + df2.format(levelA) + "%");53. System.out.println("B:" + fiveLevels1 + " " + df2.format(levelB) + "%");54. System.out.println("C:" + fiveLevels2 + " " + df2.format(levelC) + "%");55. System.out.println("D:" + fiveLevels3 + " " + df2.format(levelD) + "%");56. System.out.println("E:" + fiveLevels4 + " " + df2.format(levelE) + "%");57. 58. 算法思路:模拟算法。有一处需要特别注意,题目设置的分数等级(五级制)判断标准与我们通常采用的标准不完全相同。(具体原因不知)我们通常的五级制标准是:A:90,100,B:80,89,C:70