---
# System prepended metadata

title: UVA 630 ★
tags: [CPE 一顆星]

---

## 題目
[點我](https://onlinejudge.org/external/6/630.pdf)

## 題意
給定word 1~word n、test word 1~test word k
找跟test word i(1 <= i <= k)有著相同集合的word j(1 <= j <= n)


## 演算法

## 程式碼
```cpp=
#include <bits/stdc++.h>

using namespace std;

vector <int> convertToInt(string str){
    vector <int> cnt(26);
    for(int j = 0 ; j < str.length() ; j++){
        cnt[str.at(j) - 'a']++;
    }
    return cnt;
}

bool cmpArr(vector <int> a , vector <int> b){
    for(int i = 0 ; i < 26 ; i++){
        if(a[i] != b[i]) return 0;
    }
    return 1;
}

void func(){
    int n;
    cin >> n;
    vector <string> strArr;
    vector <vector <int>> cntArr;
    string str;
    for(int i = 0 ; i < n ; i++){
        cin >> str;
        strArr.push_back(str);
        cntArr.push_back(convertToInt(str));
    }
    
    vector <string> testStrArr;
    string tmp;
    while(1){
        cin >> tmp;
        if(tmp.at(0) == 'E'){
            break;
        }
        cout << "Anagrams for: " << tmp << endl;
        int cnt = 1;
        for(int i = 0 ; i < n ; i++){
            if(cmpArr(cntArr[i] , convertToInt(tmp))){
                cout << setw(3) << cnt << ") "<< strArr[i] << endl;
                cnt++;
            }
        }
        if(cnt == 1){
            cout << "No anagrams for: " << tmp << endl;
        }
    }
}

int main()
{
    int t;
    cin >> t;
    for(int k = 1 ; k < t ; k++){
        func();
        cout << endl;
    }
    func();
    
    

    return 0;
}



```

## 我犯的錯
他說要數字要固定三格(setw(3))，但我沒注意到
他說測資間要換行，但我每次都有換，所以錯，換句話說，最後一次輸出不用換行
格式題，好噁心

