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);
    		
    	}
    
    
    }
    
    
  • 相关阅读:
    pylint
    Cygwin安装与配置
    Spring的配置文件
    网络传输测试软件
    MINA快速传输文件
    Jar包下载
    shutdown彻底关闭tomcat,以及多线程关闭
    Git使用
    例说数学学习中的四基
    求等差数列前n项和S_n的最值
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946951.html
Copyright © 2011-2022 走看看