C++练习 | 在递增序列中查找最后一个小于等于指定数的元素
#include <iostream> using namespace std; int mid,l0; int solve(int a1[],int l,int r,int x) { if(l==r&&l==1&&a1[l]>x) return -1; if(l==r&&a1[l]<=x) return a1[l]; if(l==r&&a1[l]>x) return solve(a1,l0,mid,x); mid=(l+r)/2; l0=l; if(a1[mid]>x) return solve(a1,l,mid-1,x); else if(a1[mid]==x) return a1[mid]; else return solve(a1,mid+1,r,x); } int main() { int a[107]; int n,m,x; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; } while(m--) { cin>>x; cout<<solve(a,1,n,x)<<endl; } return 0; }
要注意考虑只剩一个元素时的求解