笔试(8/29)

1 最优化

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        int m,n;

        Scanner scanner = new Scanner(System.in);

        String[] s = scanner.next().split(",");

        m = Integer.valueOf(s[0]);

        n = Integer.valueOf(s[1]);

        int [][] arr = new int[m+1][n+1];

        for (int i = 0; i < m; i++) {

            for (int j = 0; j < n; j++) {

                arr[i][j] = scanner.nextInt();

            }

        }

        int[][] maxValue = new int[m][n];

        for (int i = 0; i < m; i++) {

            for (int j = 0; j < n; j++) {

                int up = 0,left = 0;

                if (i > 0) {

                    up = maxValue[i-1][j];

                }

                if (j > 0) {

                    left = maxValue[i][j-1];

                }

                maxValue[i][j] = Math.max(up,left) + arr[i][j];

            }

        }

        System.out.println(maxValue[m-1][n-1]);

    }

}

 

2 排序

25,84,21,47,15,27,68,35,20
21,25,84,47,15,27,68,35,20
15,20,21,25,35,27,47,68,84
15,20,21,25,27,35,47,68,84

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       StringBuffer s = new StringBuffer(scanner.next());

       if (s.length() == 0 || s == null) {

           return;

       }

        int index = 0;

        for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) == '_') {

                index++;

            } else {

                break;

            }

        }

        s.delete(0,index);

        for (int i = s.length()-1; i >= 0; i--) {

            if (s.charAt(i) == '_') {

                s.deleteCharAt(i);

            } else {

                break;

            }

        }

        for (int i = s.length()-1; i >= 1; i--) {

            if (s.charAt(i)=='_'&&s.charAt(i-1)=='_'){

                s.deleteCharAt(i-1);

            }

        }

        System.out.println(s);

    }

}

 

3、字符串去掉’_’

输入 :

___aaa___aa___b___

输出:

aaa_aa_b

import java.util.Scanner;

      public class Main {

          public static void main(String[] args) {

              Scanner scanner = new Scanner(System.in);

              int n = scanner.nextInt();

              if (n == 0) {

                  return;

              }

              String[] s = scanner.next().split(",");

              int arr[] = new int[n];

              for (int i = 0; i < n; i++) {

                  arr[i] = Integer.valueOf(s[i]);

 

             }

              int result[]  = new int[n];

              for (int i = 0; i < n; i++) {

                  int min = arr[i];

                 int index = 0;

                  for (int j = i; j < n; j++) {

                      if (arr[j] < min) {

                          min = arr[j];

                          index = j;

                      }

                  }

                  for (int j = index-1; j >= i; j--) {

                      arr[j+1] = arr[j];

                 }

                  arr[i] = min;

                  //System.out.println(min);

              }

              for (int i = 0; i < n-1; i++) {

                  System.out.print(arr[i]+",");

              }

              System.out.println(arr[n-1]);

         }

     }

    

4、分解为质因数的乘积(用递归)

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       int num = scanner.nextInt();

       PrimeSplit(num,2);

    }

 

    private static void PrimeSplit(int num, int count) {

        while (count < num && num % count != 0) {

            count++;

        }

        if (count < num) {

            System.out.print(count+"*");

            PrimeSplit(num/count,2);

        }else {

            System.out.println(count);

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值