?? 9.1.cpp
字號:
//保證沒有抄襲他人程序!
//00448246 雷加貝
#include <iostream>
using namespace std;
#define MAXN 100
int n;
int a[MAXN], b[MAXN];//a,b對應序列A,B
//函數返回a,b中較大者
int bigger(int a, int b)
{
if (a > b) return a; else return b;
}
int search(int s, int t)//查找區間[s,t]
{
int i = (s + t) / 2;//i取區間中位數
int j = (n - i - 2);//由i+j+2=n可得
if (s == t || a[i + 1] >= b[j] && b[j + 1] >= a[i]) return bigger(b[j], a[i]);//若區間收縮為點,或者i已經為滿足條件的點,則返回
if (a[i + 1] < b[j]) return search(i, t); else return search(s, i);//折半繼續查找
}
void main()
{
int i;
cin >> n;
for (i = 0; i < n; i ++)
cin >> a[i];//輸入A
for (i = 0; i < n; i ++)
cin >> b[i];//輸入B
if (a[0] > b[n - 1]) cout << b[n - 1];
else if (b[0] > a[n - 1]) cout << a[n - 1]; //判斷A[n-1]或者B[n-1]是否為中位數
else cout << search(0, n - 1) << endl;//在A的全區間內折半查找
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -