在我们学校OJ,我提交了T1的代码他给我CE了qwq,但是第二次就没有,一样的代码,问问万能的谷民这是为什么(玄关) 题目在这里 Code:
#include <iostream>
#include <cstdio>
using namespace std;
int trie[5000010][5];
long long end[5000010][5];
long long n, k, num, MAX;
string s;
int qaq(char c) {
switch (c) {
case 'A':
return 1;
case 'G':
return 2;
case 'C':
return 3;
case 'T':
return 4;
}
}
void in(string s) {
int q = 0, k;
for (int i = 0; i < s.size(); i++) {
k = qaq(s[i]);
if (!trie[q][k])
trie[q][k] = ++num;
q = trie[q][k];
}
end[q][qaq(s[s.size() - 1])]++;
}
int main() {
ios::sync_with_stdio(0);
freopen("dna.in", "r", stdin);
freopen("dna.out", "w", stdout);
cin >> s >> k;
n = s.size() - 1;
for (int i = 0; i <= n - k + 1; i++) {
string ss = s.substr(i, k);
in(ss);
}
for (int i = 1; i <= num; i++)
for (int j = 1; j <= 4; j++) MAX = max(MAX, end[i][j]);
cout << MAX;
}
错误信息:
/sandbox/1/a.cpp:28:2: error: reference to 'end' is ambiguous
28 | end[q][qaq(s[s.size()-1])]++;
| ^~~
In file included from /usr/include/c++/10/string:54,
from /usr/include/c++/10/bits/locale_classes.h:40,
from /usr/include/c++/10/bits/ios_base.h:41,
from /usr/include/c++/10/ios:42,
from /usr/include/c++/10/ostream:38,
from /usr/include/c++/10/iostream:39,
from /sandbox/1/a.cpp:1:
/usr/include/c++/10/bits/range_access.h:110:37: note: candidates are: 'template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)'
110 | template<typename _Tp> const _Tp* end(const valarray<_Tp>&);
| ^~~
/usr/include/c++/10/bits/range_access.h:109:31: note: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
109 | template<typename _Tp> _Tp* end(valarray<_Tp>&);
| ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: 'template<class _Tp, unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
100 | end(_Tp (&__arr)[_Nm])
| ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&)'
81 | end(const _Container& __cont) -> decltype(__cont.end())
| ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note: 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&)'
71 | end(_Container& __cont) -> decltype(__cont.end())
| ^~~
In file included from /usr/include/c++/10/bits/range_access.h:36,
from /usr/include/c++/10/string:54,
from /usr/include/c++/10/bits/locale_classes.h:40,
from /usr/include/c++/10/bits/ios_base.h:41,
from /usr/include/c++/10/ios:42,
from /usr/include/c++/10/ostream:38,
from /usr/include/c++/10/iostream:39,
from /sandbox/1/a.cpp:1:
/usr/include/c++/10/initializer_list:101:5: note: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
101 | end(initializer_list<_Tp> __ils) noexcept
| ^~~
/sandbox/1/a.cpp:5:11: note: 'long long int end [5000010][5]'
5 | long long end[5000010][5];
| ^~~
/sandbox/1/a.cpp: In function 'int main()':
/sandbox/1/a.cpp:44:18: error: reference to 'end' is ambiguous
44 | MAX=max(MAX,end[i][j]);
| ^~~
In file included from /usr/include/c++/10/string:54,
from /usr/include/c++/10/bits/locale_classes.h:40,
from /usr/include/c++/10/bits/ios_base.h:41,
from /usr/include/c++/10/ios:42,
from /usr/include/c++/10/ostream:38,
from /usr/include/c++/10/iostream:39,
from /sandbox/1/a.cpp:1:
/usr/include/c++/10/bits/range_access.h:110:37: note: candidates are: 'template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)'
110 | template<typename _Tp> const _Tp* end(const valarray<_Tp>&);
| ^~~
/usr/include/c++/10/bits/range_access.h:109:31: note: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
109 | template<typename _Tp> _Tp* end(valarray<_Tp>&);
| ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: 'template<class _Tp, unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
100 | end(_Tp (&__arr)[_Nm])
| ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&)'
81 | end(const _Container& __cont) -> decltype(__cont.end())
| ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note: 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&)'
71 | end(_Container& __cont) -> decltype(__cont.end())
| ^~~
In file included from /usr/include/c++/10/bits/range_access.h:36,
from /usr/include/c++/10/string:54,
from /usr/include/c++/10/bits/locale_classes.h:40,
from /usr/include/c++/10/bits/ios_base.h:41,
from /usr/include/c++/10/ios:42,
from /usr/include/c++/10/ostream:38,
from /usr/include/c++/10/iostream:39,
from /sandbox/1/a.cpp:1:
/usr/include/c++/10/initializer_list:101:5: note: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
101 | end(initializer_list<_Tp> __ils) noexcept
| ^~~
/sandbox/1/a.cpp:5:11: note: 'long long int end [5000010][5]'
5 | long long end[5000010][5];
| ^~~
/sandbox/1/a.cpp: In function 'int qaq(char)':
/sandbox/1/a.cpp:17:1: warning: control reaches end of non-void function [-Wreturn-type]
17 | }
| ^
/sandbox/1/a.cpp: In function 'int main()':
/sandbox/1/a.cpp:33:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
33 | freopen("dna.in","r",stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~
/sandbox/1/a.cpp:34:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
34 | freopen("dna.out","w",stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~