//阿里的一道题,和你这个类似,原来借鉴楼主的方法,发现行不通,有很多情况没考虑到。我换了一种方法,代码略有欠缺,但可保证正确性,在空间上开销过大,但可以利用容器改进一下,我就不该进了,如果有人改进的话,麻烦发我一份。代码如下: #include<iostream> (5488)#include<algorithm> using namespace std; #include<string> (5850)#define maxn 5000 int main() { int T; int N[maxn] = { 0 }; string str1[maxn]; string str2[maxn]; cin >> T; for (int i = 0; i < T; ++i) { int n; int temp; cin >> temp; N[i] = temp; string s; cin >> s; str1[i] = s; cin >> s; str2[i] = s; } int res[maxn] = { -1 }; for (int i = 0; i < T; ++i) { string s1, s2; s1 = str1[i]; s2 = str2[i]; int r = 0; if (s1 >= s2) { res[i] = 0; } else { long long int test1=0, test2=0; for (int j = 0; j < N[i]; ++j) { test1 = (s1[j] - 96)+test1 * 26; test2 = (s2[j] - 96)+test2 * 26; } res[i] = test2-test1-1; } } for (int i = 0; i < T; ++i) { cout << res[i] << endl; } return 0; }

相关推荐

牛客网
牛客企业服务