赞
踩
1.求没出现重复字符的最长字串长度
(我发现每次笔试时候都来不及好好想,就只能暴力,有一些暴力也没过去)
暴力
- public static void main(String[] args){
- Scanner cin = new Scanner(System.in);
- String input = cin.nextLine();
- int maxLength = 1;
- ArrayList<Character> list = new ArrayList<>();
- int index = 0;
- while (index<=input.length()-1){
- int length=0;
- list.clear();
- int j = index;
- for(;j<input.length();j++){
- if(!list.contains(input.charAt(j))){
- length++;
- list.add(input.charAt(j));
- }else {
- if(length>maxLength) maxLength = length;
- index++;
- break;
- }
- }
- if(j>=input.length()){
- if(length>maxLength) maxLength = length;
- index++;
- }
- }
- System.out.println(maxLength);
- }
2.现在有6种杯子,其容积大小分为1 10 20 50 100 。假设水足够多,编写程序求装满体积为
N的桶(N为0~10000的非负整数)的不同组合的个数。
先贴一个暴力法只通过百分之75,其余超时的答案。(据说换成long再考虑空值可以到100%?没机会试了)
- public static void main(String[] args){
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- int[] array = {100,50,20,10,5,1};
- int[] max = new int[array.length];
- for(int i=0;i<array.length;i++){
- max[i] = n/array[i];
- }
- int result = 0;
- for(int i100=0;i100<=max[0];i100++){
- if(i100 * 100 > n) break;
- for(int i50=0;i50<=max[1];i50++){
- if(i100*100+i50*50>n) break;
- for(int i20=0;i20<=max[2];i20++){
- if(i100*100+i50*50+i20*20>n) break;
- for(int i10=0;i10<=max[3];i10++){
- if(i100*100+i50*50+i20*20+i10*10>n) break;
- for(int i5=0;i5<=max[4];i5++){
- if(i100*100+i50*50+i20*20+i10*10+i5*5>n) break;
- for(int i1=0;i1<=max[5];i1++){
- if(i100*100+i50*50+i20*20+i10*10+i5*5+i1>n) break;
- result++;
- }
- }
- }
- }
- }
- }
- System.out.println(result);
- }
牛客网看到的答案
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- if (n == 0) {
- System.out.println(0);
- return;
- }
- int[] v = new int[]{1, 5, 10, 20, 50, 100};
- long[] dp = new long[n + 1];
- dp[0] = 1;
- for (int i : v) {
- for (int j = i; j <= n; j++) {
- dp[j] += dp[j - i];
- }
- }
- System.out.println(dp[n]);
- }
- }
3.本来是杂乱无章的一个int(比如是4 7 8 9),输入给出每个分组1 2 0 1 输出 0 1 1 2这样的非递减数列(实际就是排序)但是题里没说除了0 1 2还有别的分组!我竟然没有排序!而是去统计0 1 2 的数量 然后输出!最后只通过60%
从题里真的看不出来 除了0 1 2还有别的组号 真是哭了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。