小 W 喜欢研究排队序列。操场上全班同学排成一个队伍,小 W 认为如果有 4 位同学 ai,aj,ak,al的身高满足 ai=ak,aj=al,且 i<j<k<l 时,会构成一个交叉匹配, 但学生数较多,请编程帮助小 W 计算交叉匹配的个数。 输入格式: 第一行为正整数 t(≤5),表示数据组数;每组数据中,第一行为正整数 n(≤ 5000),第二行为个正整数 ai(≤200),表示每位同学的身高。 c语言编程
时间: 2023-05-27 15:02:47 浏览: 125
#include <stdio.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int n;
scanf("%d", &n);
int cnt[201] = {0};
long long ans = 0;
for (int i = 0; i < n; i++)
{
int h;
scanf("%d", &h);
ans += cnt[h];
cnt[h]++;
}
printf("%lld\n", ans);
}
return 0;
}
相关问题
小 W 喜欢研究排队序列。操场上全班同学排成一个队伍,小 W 认为如果有 4 位同学 ai,aj,ak,al的身高满足 ai=ak,aj=al,且 i<j<k<l 时,会构成一个交叉匹配, 但学生数较多,请编程帮助小 W 计算交叉匹配的个数。 c++编程
#include <stdio.h>
#define MAX_N 1005
int n, ans;
int a[MAX_N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
if (a[i] == a[j]) { // 找到身高相同的两个人
for (int k = i + 2; k < j; k++) {
for (int l = k + 1; l < j; l++) {
if (a[k] == a[l]) { // 找到身高相同的另外两个人
ans++; // 计数
}
}
}
}
}
}
printf("%d\n", ans);
return 0;
}
阅读全文