#44291: c++解題方法


dvbdarcyvolleyball@gmail.com (kuhaku1027)

學校 : 新北市私立南山高級中學
編號 : 266888
來源 : [203.71.175.235]
最後登入時間 :
2025-03-20 15:47:22
d732. 二分搜尋法 | From: [123.252.121.18] | 發表日期 : 2024-11-21 14:38

   小心無窮迴圈,ouob

#include <bits/stdc++.h>
#define fast_as_a_fuckboy ios_base::sync_with_stdio(0); cin.tie(0);
  using namespace std;

  int main(){
    fast_as_a_fuckboy;
    int x, y;
    cin >> x >> y;
    vector<int> a(x), b(y);
    for(int i = 0;i < x;i++){
      cin >> a[i];
    }
    for(int i = 0;i < y;i++){
      cin >> b[i];
    }
    for(int i = 0;i < y;i++){
      int L = 0, R = x-1, M;
      bool found = 0;
      while(L <= R){
         M = L+(R-L)/2; //避免溢位
        if(a[M] == b[i]){
          cout << M+1 << "\n";
          found = 1;
          break;
        }
        else if(a[M] < b[i]){
          L = M + 1;//+1避免無窮
        }
        else{
          R = M - 1;//-1避免無窮
        }
      }
      if(!found){
        cout << "0\n";
      }
    }
  }

 
ZeroJudge Forum