题意:有n件衣服,m条裤子,k双袜子,有p个不允许的搭配,问一共有多少种穿搭。
题记:不允许的穿搭中只有衣服-裤子和裤子-袜子这两种搭配。所以我们只需要记录每条裤子不能搭配的衣服和袜子即可。(a[]和b[]),最后遍历每条裤子,求和每条裤子的搭配:(n-a[i])*(k-b[i])。
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N],b[N];
int main(){
int n,m,k;
while(cin>>n>>m>>k){
if(n==0&&m==0&&k==0) break;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int p,x1,x2;
cin>>p;
string s1,s2;
while(p--){
cin>>s1>>x1>>s2>>x2;
if(s1[0]=='c') a[x2]++;
if(s1[0]=='p') b[x1]++;
}
int ans=0;
for(int i=1;i<=m;i++){
ans+=(n-a[i])*(k-b[i]);
}
cout<<ans<<endl;
}
return 0;
}