字符串格式化,给出一串字符串(只包含小写字母),将'n'前面的加上换行输出,每个输出的首字母大写,如果输入的字符串为'n',那么输出'N',字符串的第一个为n,不用输出换行。(AC)
import java.util.Scanner; public class Main3{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); str = str.replaceAll("n","N"); str= Character.toUpperCase(str.charAt(0))+str.substring(1); String temp = ""; for(int i=0;i<str.length();i++){ if(str.charAt(i)!='N'){ temp+=str.charAt(i); }else if(str.charAt(i)=='N' && i!=0){ System.out.println(temp); temp = "N"; }else{ temp = "N"; } } if(!temp.equals("")){ System.out.println(temp); } } }
分组背包问题,做题中没想出来,混了9%,下面是结束之后写的代码。
import java.util.Scanner; /** * 题目描述: * 给出 n m分别表示n个英雄和m件装备 * 然后给出n*m的二维数组 表示第n个英雄装备m件装备时候的攻击力 * 例子: * 2 3 * 5 6 7 * 7 8 9 * * 表示有两个英雄 和 3件装备 第一个英雄装备1件 攻击力为 5 装备2件 攻击力为6 * * 上面例子输出 13 第一个英雄装备2件,第二个英雄装备1件 7+7=13 * * 问 n个英雄能够装备出的最大攻击力为多少 * * 分组背包问题,n组物品,每组物品最多选1个,每个物品有价值和其体积,背包空间为m,背包能够装下的最大价值 * * */ public class Main4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m =sc.nextInt(); int[][] value = new int[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ value[i][j] = sc.nextInt(); } } // dp[i]表示 能够装备i件装备时候 所有英雄的攻击力 int[] dp = new int[m+1]; //枚举每一个英雄 for(int i=0;i<n;i++){ //枚举能够装的装备数 从大到小枚举 for(int j = m;j>=0;j--){ //枚举我们选的哪个 for(int k = 1;k<=m;k++){ if(j-k>=0){ dp[j] = Math.max(dp[j],dp[j-k]+value[i][k-1]); } } } } System.out.println(dp[m]); } }
全部评论
(1) 回帖