zoukankan      html  css  js  c++  java
  • b场景算法题(Java实现)

    <一>、字母倒着输出

    题目描述:

    给定一组字符串,然这组字符串中的字母按照倒着的顺序输出,空格保留。

    例如:

      输入:

        i am a student

      输出:

        student am i

    代码如下:

    import java.util.Scanner;
    
    public class Main4 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		
    		String str = in.nextLine();
    		String[] strs = str.split(" ");
    		
    		StringBuffer sb = new StringBuffer();
    		for(int i = strs.length - 1;i >= 0;i--) {
    			sb = sb.append(strs[i]).append(" ");
    		}
    		System.out.println(sb.toString());
    	}
    
    }
    

     <二>寻找最小数的字串

    题目描述:

    给定一组数组,用逗号分隔,求得到这组数组中数组成的最小数字。

    例如:

      输入:

        21,321

      输出;

        21321

    代码如下:

    package com.ymm.core.b;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;

    public class Main2 {

        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String str = in.nextLine();
            String[] strs = str.split(",");
            
            printNum(strs);

        }
        
        private static void printNum(String[] strs) {
            
            ArrayList<String> list = new ArrayList<>();
            for(String s : strs) {
                list.add(s);
            }
            
            Collections.sort(list,new Comparator<String>() {

                @Override
                public int compare(String s1, String s2) {
                    String str1 = s1 + s2;
                    String str2 = s2 + s1;
                    return str1.compareTo(str2);
                }

            });
            StringBuffer sb = new StringBuffer();
            for(String j : list) {
                sb.append(j);
            }
            System.out.println(sb.toString());
        }

    }

     <三>背包问题

    题目描述
    有为N件物品,它们的重量w分别是w1,w..,wn,它们的价值v分别是1.,.....,每件物品数量有且仅有一个, 现在给你个承重为M的背包,求背包里装入的物品具有的价值最大总和?
    输入描述:

    物品数量N=5件

    重量W分别为:2 2 6 5 4

    物品价值为:3 6 9 5 6

    背包数量为:10

    输出描述:

    最大价值为:18

    代码如下:

    package com.ymm.core.b;
    
    import java.util.Scanner;
    
    public class Main1 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
            
    		int N = in.nextInt(); //物品的数量
    		
    		int W = in.nextInt(); //背包的容量
            
            int[] weight = new int[N + 1];//物品的重量
    
    		int[] value = new int[N + 1];//物品的价值
            
            for(int i = 1;i <= N;i++) {
    			weight[i] = in.nextInt();
    		}
            
            for(int i = 1;i <= N;i++) {
    			value[i] = in.nextInt();
    		}
            
            
            int[][] maxVal = new int[N + 1][W + 1]; // 最大价值
    		int[] a = new int[N + 1];//判断
            
    		for(int i =1;i <= W;i++) {
    			for(int j = 1;j <= N;j++) {
    				if(i >= weight[j]) {
    					 //f[i][j] = max(f[i-1][j], f[i-1][j-Vi] + Wi)
    					//Vi表示第i件物体的体积,Wi表示第i件物品的价值。这样f[i-1][j]代表的就是不将这件物品放入背包
    					//而f[i-1][j-Vi] + Wi则是代表将第i件放入背包之后的总价值,比较两者的价值,
    					//得出最大的价值存入现在的背包之中
    					maxVal[j][i] = Math.max(maxVal[j - 1][i - weight[j]] + value[j],
    								maxVal[j - 1][i]);
    				}else{
    					//前j个物体
    					maxVal[j][i] = maxVal[j - 1][i];
    				}
    			}
    		}
    		int n = W;
    		for(int i = N;i > 0;i--) {
    			if(maxVal[i][n] == maxVal[i - 1][n]) {
    				a[i] = 0;
    			}else {
    				a[i] = 1;
    				n = n - weight[i];
    			}
    		}
    	
    		System.out.println("取得最大价值:" + maxVal[N][W]);
    	}
    
    }
    

       

  • 相关阅读:
    JAVA-初步认识-第七章-默认构造函数
    JAVA-初步认识-第七章-面向对象-构造函数-概述
    JAVA-初步认识-第六章-应用场景
    JAVA-初步认识-第六章-二维数组-另一种定义方式
    JAVA-初步认识-第六章-二维数组-定义方式内存图解2
    JAVA-初步认识-第六章-二维数组-定义方式内存图解
    通过IFeatureClass 接口查询 IWorkspace, 查询通配符
    failed to register esriAddin
    DataGridView实时提交
    ArcGIS AddIn开发笔记(一)
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11388602.html
Copyright © 2011-2022 走看看