iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

JAVA簡易教學+CPE歷屆試題講解系列 第 24

[iT鐵人賽Day24]練習題(3)

  • 分享至 

  • xImage
  •  

今天來講到第三題練習題
題目的大意就是:
有一個小弟弟正在玩積木,然後說他蓋了一個城牆。
但他姐姐說,那才不是城牆,城牆應該要一樣高才對。
所以我們必須把積木排成同樣高度的城牆
然後題目給的輸入是
6
5 2 4 1 7 5
0
程式碼如下

import java.util.*;
import static java.lang.System.*;
public class main{
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int time = 0;
    while(sc.hasNext())
    {
    	time++;
    	int a = sc.nextInt();
    	if(a == 0)
    	{
    		continue;
    	}
		int arr[] = new int[a];
    	for(int i = 0 ; i < a ; i++)
    	{
    		arr[i] = sc.nextInt();
    	}
    	int total = 0;
    	for(int i : arr)
    	{
    		total += i;
    	}
    	total /= a;
    	int sum = 0;
    	for(int i : arr)
    	{
    		if(total - i >= 0)
    			sum += (total - i);
    	}
    	System.out.printf("Set #%d\r\n",time);
    	System.out.println("The minimum number of moves is "+sum+".");
    	System.out.printf("\r\n");
    }
  }
};

為了怕新的東西有點生疏,這次再複習一次
Scanner:取得使用者輸入的數字或字串。System.in就是系統的輸入。
hasNext:常用判斷是否還有輸入的數字或字串。
nextInt:只讀取數字,剩下"\n"還沒有讀取。
total /= a 就是 total = total/a。
int a = sc.nextInt();
設定一個整數a,a等於取到的數值

 	int arr[] = new int[a];
   	for(int i = 0 ; i < a ; i++)
    	{
   		arr[i] = sc.nextInt();
    	}

設定一個陣列,陣列裡有a個格子,
然後設定一個整數i,此整數小於a,arr[i]指的是個格子的編號
arr[i] = sc.nextInt()是設定編號i的值

    	int total = 0;
    	for(int i : arr)
    	{
    		total += i;
    	}
    	total /= a;

設定一個整數total,total等於陣列裡整數i的總和
然後再把total除以a取得平均值

        int sum = 0;
    	for(int i : arr)
    	{
    		if(total - i >= 0)
    			sum += (total - i);
    	}

設定一個整數sum,sum等於sum + (total - i),算出需要移動幾次。
最後會輸出最少需要的移動次數
結果如下:
https://ithelp.ithome.com.tw/upload/images/20210924/20140567ihqQh1KCkV.png


上一篇
[iT鐵人賽Day23]練習題(2)
下一篇
[iT鐵人賽Day25]練習題(4)
系列文
JAVA簡易教學+CPE歷屆試題講解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言