#38407: c(2ms)/c++(2ms, 96KB)/java(0.4ms)簡單解法,只有我覺得這個第一題偏難嗎?有一個小錯,後來發現就AC了


bobobo0413 (Andy)

學校 : 國立臺灣大學
編號 : 252359
來源 : [163.30.63.84]
最後登入時間 :
2024-11-21 13:04:23
h081. 1. 程式交易 -- 2022年1月APCS | From: [111.71.114.172] | 發表日期 : 2023-11-19 16:05

c(2ms)/c++(2ms, 96KB)/java(0.4ms)我的方法是第一個值設為b,然後第二個值開始輸入,檢查是否高於b+d。超過即紀錄賣點的值s,,檢查是否低於s-d。利用e判斷是否持有股票,這個蠻關鍵的,要AC就靠他,沒設的話,範例過了,測資不會過。以下附上原始碼,當然是java的,java太多眉眉角角的細節,考試還是乖乖用C++比較順。

import java.util.Scanner;public class A202311191 {

public static void main(String[] args) {

    int n,d,i,a,b,s=0,c=0,e=1;
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    d = sc.nextInt();
    b = sc.nextInt();
for(i=1;i<n;i++)
{
   a= sc.nextInt();
   if(e==1)
   {
       if(a>=b+d)
   {
        s=a;
        c+=(s-b);
        e=0;
   }
   }
   else
   {
       if(a<=s-d)
       {
           b=a;
       e=1;
       }

   }
}
System.out.println(c);

}
}

 
ZeroJudge Forum