思路讲解
主要我们借用这道题目练习一下C++的分词以及逐行输入。
搜过了,其实也没什么方便的分词方法,substr也是依靠序号进行切片,没什么卵用。
哈哈,其实在赛场上我也是做出来了,但用的是python,他的整行输入是真的好用,就是动态类型啥的我老写C++就觉得不习惯。
AC代码
采用测试数据在本地进行测试,鸣谢CPeditor的支持。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #include <bits/stdc++.h> #define FOR(i, a, b) for (long long i = (a); i <= (b); ++i) #define ROF(i, a, b) for (long long i = (a); i >= (b); --i) #define all(x) x.begin(),x.end() #define CLR(i,a) memset(i,a,sizeof(i)) #define fi first #define se second #define pb push_back #define SZ(a) ((int) a.size()) using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<ll,ll> pll;typedef array<ll,3> arr;typedef double DB;typedef pair<DB,DB> pdd;constexpr ll MAXN=static_cast <ll>(1e6 )+10 ,INF=static_cast <ll>(5e18 )+3 ;ll N,M,T,A[MAXN]; inline void solve () { cin>>N; cin.get (); for (int i=1 ;i<=N;++i){ string sline; getline (cin,sline); sline+=" " ; string s; set<string> ans; bool isConti=false ; for (int i=0 ;i<sline.size ();++i){ if (sline[i]==' ' && isConti){ isConti=false ; ans.insert (s); s.clear (); continue ; } s+=sline[i]; isConti=true ; } cout<<ans.size ()<<"\n" ; } } int main () { ios::sync_with_stdio (false ); cin.tie (0 );cout.tie (0 ); solve (); return 0 ; }
心路历程(WA,TLE,MLE……)