#33489: 好多segmentation fault....


liuc7721 (Shin)

學校 : 國立竹東高級中學
編號 : 179484
來源 : [116.241.208.216]
最後登入時間 :
2024-11-16 16:54:17
a686. 蝸牛往上爬 | From: [42.73.250.128] | 發表日期 : 2023-01-09 20:44

我沒用公式解,用陣列存每筆測資

#include <iostream>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  while(cin >> n){
    double x[n],y[n],z[n];
    for(int i=0; i<n; i++){
      cin >> x[i] >> y[i] >> z[i]; //牆高、爬幾公尺、掉幾公尺
    }
    for(int i=0; i<n; i++){
      double h = 0;
      int day = 0;
      h += y[i];
      day++;
      
      if(h >= x[i]) //第一天就爬到
        cout << day << '\n';
      while(1){
        h -= z[i];
        if(h<=0) //掉到地板
          break;
        h += y[i];
        day++;
        if(h>=x[i]) //爬到頂樓了
          break;
      }
      if(h >= x[i])
        cout << day << '\n';
      if(h <= 0)
        cout << "Poor Snail" << '\n';
    }

  }

  
}

 

結果都是segmentation fault 和錯誤

不懂哪邊

 
#33671: Re: 好多segmentation fault....


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a686. 蝸牛往上爬 | From: [27.53.72.152] | 發表日期 : 2023-01-20 08:25


    double x[n],y[n],z[n];


n很大,可能會stack overflow,建議不用陣列,一筆輸入後馬上計算後輸出答案

另外如果第一天就爬到(y>=x),你會一次就輸出兩行

 
ZeroJudge Forum