题目大意给出衣服裤子鞋子,给出哪些是不搭配的,求三件套都搭配的方案总数。
可以用计算方案的补集,也可以枚举每一种裤子i,累计(n-a[i])*(k-b[i]) a[i],b[i]分别为关于裤子不搭配的方案。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#define maxn 1010
using namespace std;
char s1[20],s2[20];
int a[maxn],b[maxn];
int sum,p,n,m,k,v1,v2;
int main()
{
while (scanf("%d%d%d",&n,&m,&k)!=EOF)
{
if (!n && !m && !k) break;
cin>>p;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int sum=0;
for (int i = 0; i < p;++i)
{
scanf("%s%d%s%d",&s1,&v1,&s2,&v2);
if (!strcmp(s1,"clothes"))a[v2]++;
if (!strcmp(s2,"shoes")) b[v1]++;
}
for (int i = 1; i <=m; ++i)
sum+=(n-a[i])*(k-b[i]);
cout << sum << endl;
}
return 0;
}