2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 西安交通大学915考研--编程题Java代码踩坑(真题)

西安交通大学915考研--编程题Java代码踩坑(真题)

时间:2020-07-24 06:19:41

相关推荐

西安交通大学915考研--编程题Java代码踩坑(真题)

西安交通大学915考研–编程题Java代码踩坑(真题)

目录

西安交通大学915考研--编程题Java代码踩坑(真题).1--寻找方程组的解.2--几组数中筛选出反序数.3--商品购买方案(人民币组合问题)

.1–寻找方程组的解

问题描述:

有a、b、c、d四个0-9的未知整数,组成两个四位数,分别是abcd、cadb;求使得两个四位数之和等于9012的所有解

思路:

直接用四个for循环暴力求解相加和正确的就输出,不正确就跳过这里不需要考虑优化,如果有时间可以写时间复杂度、空间复杂度,并给出优化思路的文字描述。

代码实现:

package com.xjtu;/*** @Author: cc雪影* @Description:*/public class A_01 {public static void main(String[] args) {int num1;int num2;for (int a = 0; a <= 9; a++) {for (int b = 0; b <= 9; b++) {for (int c = 0; c <= 9; c++) {for (int d = 0; d <= 9; d++) {num1 = a * 1000 + b * 100 + c * 10 + d;num2 = c * 1000 + a * 100 + d * 10 + b;if (num1 + num2 == 9102) {System.out.println(a + " " + b + " " + c + " " + d);}}}}}}}

.2–几组数中筛选出反序数

问题描述:

接收n组数,针对每一组进行判断,若互为两位的反序数之和与原数之和互为反序数,则输出;若n组数中不存在这种数组,输出none

反序数:所谓反序数,即有这样成对的数,其特点是其中一个数的个数字排列顺序完全颠倒过来,就变成另一个数,如102和201,36和63等,简单的理解就是顺序相反的两个数,我们把这种成对的数互称为反序数。

解题思路

对于反序数的求法,可以将整数转换成字符串进行处理写一个judge函数,用于判断改组数组是不是符合题目要求最后引入isEmpty变量,记录n组数中是否存在满足题意的数组,若不满足,则输出none

代码实现:

package com.xjtu;import java.util.Scanner;/*** @Author: cc雪影* @Description:*/public class A_02 {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入组数 n");int n = in.nextInt();int arr[][] = new int[n][2];for (int i = 0; i < n; i++) {arr[i][0] = in.nextInt();arr[i][1] = in.nextInt();}boolean isEmpty = true;for (int i = 0; i < arr.length; i++) {if (judge(arr[i][0], arr[i][1])) {isEmpty = false;System.out.println(arr[i][0] + " " + arr[i][1]);}}if (isEmpty) {System.out.println("none");}}public static boolean judge(int a, int b) {int n1 = reverse(a);int n2 = reverse(b);int n3 = reverse(a + b);return (n1 + n2) == n3;}//123 111 321 111 432public static int reverse(int number) {String s = "";String string = Integer.toString(number);char[] chars = string.toCharArray();for (int i = chars.length - 1; i >= 0; i--) {s = s + chars[i];}return Integer.parseInt(s);}}

输入输出:

请输入组数 n3112 754234 467123 111112 754123 111

.3–商品购买方案(人民币组合问题)

问题描述:

购买礼物,,商品A:150元, B:100元,C: 50元, D:50元;合计消费200元,且每种商品购买的数量不作要求,求共有多少种购买方案。

解题思路

仿照人民币组合问题,利用动态规划,逐次求出合计200元时的购买方案种类dp数组初始值设为1,dp[i]意义是,总花费是i元时,购买方案的种类数

代码实现:

package com.xjtu;/*** @Author: cc雪影* @Description:*/public class A_03 {public static void main(String[] args) {int money = 200;int arr[] = {150, 100, 50, 50};System.out.println(dpGetresult(200, arr));}public static int dpGetresult(int money, int price[]) {int dp[] = new int[money + 1];dp[0] = 1;// dp[i]意义是,组建值为 i,方案的种类数for (int i = 0; i < price.length; i++) {//依次加入价值为 price[i]的商品for (int j = price[i]; j <= money; j++) {//从前往后遍历 dp 数组,更新 dp 数组的值dp[j] = dp[j] + dp[j - price[i]];}}return dp[money];}}

输入输出:

11

题目结束,这里是传送门:

西安交通大学915考研–编程题Java代码踩坑(真题)

西安交通大学915考研–编程题Java代码踩坑(真题)

西安交通大学915考研–编程题Java代码踩坑(真题)

西安交通大学915考研–编程题Java代码踩坑(真题)

西安交通大学915考研–编程题Java代码踩坑(真题)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。