2011-08-23 10:15:44Morris

a224. 明明愛明明

a224. 明明愛明明

內容 :

一看題名,你就該知道,這次跟迴文脫不了關係!
若你不確定什麼是「迴文」,請看 Google 字典的解釋:

迴文 huíwén

一種修辭方式。
通過詞語反復迴環使用,表達二者互相依存或彼此制約的關係,
如“人人為我,我為人人”、“饒人不癡漢,癡漢不饒人”。

輸入說明 :

一筆測試資料一行,包含許許多多但總數不超過 1000 個的大小寫英文字母和標點符號。
不可思議的是,裡面不會有任何空白字元。

輸出說明 :

如果重新安排順序後,有辦法讓這一堆英文字母變成迴文的話,輸出「yes !」,否則輸出「no...」。
注意,大寫和小寫字母視為相同,即 A 和 a 是一樣的,並且,請忽視所有非英文字母的字元。

範例輸入 :

ababa
bbaaa
Level
aaabbbcc
abcdefg
HowAreYouToday
A_man,_a_plan,_a_canal:_Panama.

範例輸出 :

yes !
yes !
yes !
no...
no...
no...
yes !

提示 :

出處 :

(管理:VacationClub)



垃圾題, 用來拚短碼囉

/**********************************************************************************/
/*  Problem: a224 "明明愛明明" from                                          */
/*  Language: C                                                                   */
/*  Result: AC (2ms, 150KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-08-23 10:04:42                                     */
/**********************************************************************************/


#include<stdio.h>
main() {
    char s[1001];
    while(gets(s)) {
        int a, t[26] = {}, f = 0;
        for(a = 0; s[a]; a++)
            if(s[a] >= 'a' && s[a] <= 'z')
                t[s[a]-'a']++;
            else if(s[a] >= 'A' && s[a] <= 'Z')
                t[s[a]-'A']++;
        for(a = 0; a < 26; a++)
            f += t[a]&1;
        puts(f > 1 ? "no..." : "yes !");
    }
    return 0;
}
guest 2011-09-17 23:42:43

還是不太懂.

不過,謝謝您!

guest 2011-09-16 12:44:15

for(a = 0; a < 26; a++)
f += t[a]&1;

我想問一下,t[a]&1是甚麼意思?

版主回應
f += t[a]%2;

& = AND 運算, 跟 1 作 AND, 簡單的說, 就是轉成二進制後,
作 AND, 馬上就可以看出奇偶數
2011-09-16 19:46:56