B题求助!
为啥第23行 b[[i]<temp
加个等号写成b[i]<=temp
就过了,个人感觉加不加都一样
#include <bits/stdc++.h> #define ll long long #define endl '\n' #define INIT ios::sync_with_stdio(false), cin.tie(0), cout.tie(0) using namespace std; int gcd(int a, int b){ return b? gcd(b, (a%b)): a; } const int N = 300010; int n,m; string a,b; char lx[N]; //lx[]和idx[]这俩个数组记录b串第i个位置的右边(包括第i个位置)最小的值,及其位置 int idx[N]; void solve(){ cin >> n >> a >> b; char temp = '9'; int tempi = n; for(int i = n-1; i >=0; --i){ ///从右往左遍历实现 if(b[i] <= temp){ //写成 if(b[i]<temp) 只过了86.6% temp = b[i]; tempi = i+1; } lx[i] = temp; idx[i] = tempi; } for(int i = 0; i < n; i++){ if(a[i] > lx[i]) { cout << i+1 << ' ' << idx[i] << endl; return; } } if(a[0] == b[0]) cout << 1 << " " << 1 << endl; else cout << 2 << " " << 2 << endl; } int main(){ INIT; int _ = 1; cin >> _; while(_--){ solve(); } }