题目大意:
n件衣服,m条裤子,k双鞋子进行搭配
妈妈指明了哪些衣服和裤子不能搭配,哪些裤子和鞋子不能搭配,问最后有几种搭配方法
先假设都能搭配 n*m*k
每次遇到衣服和裤子不能搭的,就要减一次k,同时记录这个衣服和裤子出现的次数,避免以后重复减去的可以加回来
裤子和鞋子也是同样道理
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int N=1005; 6 int cl[N][2] , pa[N][2] , sh[N][2]; 7 int n , m , k , p , a , b; 8 char s1[20], s2[20]; 9 10 int main() 11 { 12 // freopen("a.in" , "r" , stdin); 13 while(scanf("%d%d%d" , &n , &m , &k) ,n||m||k) 14 { 15 memset(cl , 0 ,sizeof(cl)); 16 memset(pa , 0 ,sizeof(pa)); 17 memset(sh , 0 ,sizeof(sh)); 18 19 int ans = n*m*k; 20 scanf("%d" , &p); 21 for(int i=0 ; i<p ; i++) 22 { 23 scanf("%s%d%s%d" , s1 , &a , s2 , &b); 24 if(s1[0] == 'c' && s2[0] == 'p'){ 25 ans -= k; 26 ans += cl[a][1]; 27 ans += pa[b][1]; 28 cl[a][0]++; 29 pa[b][0]++; 30 } 31 else if(s1[0] == 'p' && s2[0] == 's'){ 32 ans -= n; 33 ans += pa[a][0]; 34 ans += sh[b][0]; 35 pa[a][1]++; 36 sh[b][1]++; 37 } 38 } 39 printf("%d\n" , ans); 40 } 41 return 0; 42 }
我还在坚持,我还未达到我所想,梦~~一直在