NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2015國中組決賽
 npsc2015-國中組決賽 F. 頗汪排球球

作者 主題: npsc2015-國中組決賽 F. 頗汪排球球  (閱讀 1079 次)

rscpp

  • 中級會員
  • ***
  • 文章數: 60
    • 檢視個人資料
npsc2015-國中組決賽 F. 頗汪排球球
« 於: 一月 13, 2016, 08:22:51 pm »

我的想法是,傳統的迴文是首尾各比較是否為 相同的字元
改成 N 列,改成(第1列、第N列)、(第2列、N-1列)…兩兩比較是否為 可匹配的兩列

可匹配的兩列:就是找得到有相同的小寫字母。

代碼: [選擇]
/*
npsc2015-j2f-mul   國中組決賽 F. 頗汪排球球

*/

#include <iostream>
#include <cstring>
using namespace std;

bool match(string s1, string s2)
{
bool used[26];
memset(used,false,sizeof(used));
int i;
for(i=s1.size()-1; i>=0; --i) used[ s1[i]-'a' ] = true;
for(i=s2.size()-1; i>=0; --i)
if( used[ s2[i]-'a' ] ) return true;
return false;
}
int main(void)
{
int i,j,k , n,m,t;

string s[100];

cin >> t;
while( t-- )
{
cin >> n;
for(j=0;j<n;++j) cin >> s[j];
bool yes=true;
for(j=0;j<n/2;++j)
{
if( !match( s[j],s[n-1-j] ) )
{
yes=false;
break;
}
}
if(yes) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
/*
3
1
abccc
3
bdcvg
tmt
paul
4
e
d
d
yee

---- out
Yes
No
Yes
*/

« 上次編輯: 一月 14, 2016, 07:44:56 pm 由 rscpp »
記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2015國中組決賽
 npsc2015-國中組決賽 F. 頗汪排球球