zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 change

    算法提高 change
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      数组A中共有n个元素,初始全为0。你可以对数组进行两种操作:1、将数组中的一个元素加1;2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。
    输入格式
      第一行一个正整数n表示数组中元素的个数

    第二行n个正整数表示目标状态B中的元素
    输出格式
      输出一行表示最少操作数
    样例输入
    2

    7 8
    样例输出
    7
    数据规模和约定
      n<=50,B[i]<=1000

    import java.util.Scanner;
    
    
    public class change {
    	static int a[]=new int [51];
    	static int n;
    	public static boolean juge(){
    		for (int i = 0; i < n; i++) {
    			if(a[i]!=0)
    				return true;
    		}
    		return false;
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc=new Scanner(System.in);
    		n=sc.nextInt();
    		for (int i = 0; i < n; i++) {
    			a[i]=sc.nextInt();
    		}
    		int sum=0;
    		while(juge())
    		{
    			for(int i=0;i<n;i++)
    			if(a[i]%2==0) continue;//如果是偶数就放过它。。。
    			else 
    			{
    				a[i]--;//改造为偶数,并操作加1
    				sum++;
    			}
    			if(juge())
    			{
    				for(int i=0;i<n;i++)
    				a[i]/=2;
    				sum++;
    			}
    			else break;
    		}
    		System.out.println(sum);
    		
    	}
    
    
    }
    
    
  • 相关阅读:
    PHP设计模式
    秒杀方案
    lua 安装
    docker 相关命令
    dockerfile
    JS工具对象 DATE 方法
    JS工具对象 Array
    JS工具对象 String 10种常用 方法
    工具对象
    JS工具对象Math 7个常用 方法
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946951.html
Copyright © 2011-2022 走看看