有多组测试,每组测试会给出一个长度为 n 的数组 P,你需要用程序判断 P 中的数字是否为一个 1-n 的排列(包含1-n各一次)。

输入
第1行:1个数字t,表示测试的组数(1 < t <= 1000)。
之后每组数据两行:
第1行:1个数字n,表示数组的长度(1 < n <= 500)。
第2行:共n个数字P[i],中间用空格分隔,对应数组的元素(1 < P[i] <= 10^9)。
输出
输出共t行,对应每一组数据的判断结果,输出“Yes”或者 "No"。
数据范围
1 <= t <= 1000,1 < n <= 500,1 < P[i] <= 10^9
输入样例
2
4
1 2 4 3
4
1 4 2 2
输出样例
Yes
NO
样例解释
1 2 4 3 包含 1-4各一次,所以输出 "Yes",
1 4 2 2 中不包括3,却出现了2个2,所以输出 "No"

#include<iostream>
#include<cstring>
using namespace std;
int p[505];
int main() {
    int t,a,f,n;
    cin >> t;
    for(int i = 1; i <= t; i++) {
        cin >> n;
        memset(p,0,sizeof(p));
        for(int j = 1; j <= n; j++) {
            cin >> a;
            p[a] = 1;
        }
        f = 1;
        for(int j = 1; j <= n; j++) {
            if(p[j] == 0) {
                f = 0;
                break;
            }
        }
        if(f)
            cout << "yes"<<endl;
        else
            cout << "No"<<endl;
    }
    return 0;
}