[Codeforces] #422 (Div. 2)
題目連結: http://codeforces.com/contest/822 #A 啦啦啦 # include < iostream > using namespace std; int f (int a){return a == 1 ? 1 : a* f (a-1);} int main (){ int a,b;cin >> a >> b; cout << f( min (a,b)) << endl; } #B 窮舉 t 的子字串然後比較看哪一段的差異最小,並記錄是哪一段,最後再重新跑一次那一段,並輸出不一樣的位置。 # include < iostream > # include < string > using namespace std; int main (){ int n,m; cin >> n >> m; string s1,s2; cin >> s1 >> s2; int ans = 21474836,ans2; for(int i = 0 ; i < (m-n+1) ; i++){ int tmp = 0; for(int j = 0 ; j < n ; j++){ if(s1[j] != s2[j+i])tmp++; } if(ans > tmp)ans = tmp,ans2 = i; } cout << ans << endl; for(int j = 0 ; j < n ; j++){ if(s1[j] != s2[j+ans2]){ cout << j+1 << ' ';; } } return 0; } #C 可以按照 r-l+1 的數值分組。 窮舉所有旅途,要找x-(r-l)+1那組中不重複的區間的花費的最小,但因為你會窮舉所有旅...