由於要求的是學生選中理想中第一名的組合數有多少,所以就只看選每個樂器為理想中第一名的學生數有多少,從中就有相同數的選擇可以選。至於其他沒選中的學生要選第二名、第三名……等等,就不再討論範圍內了。
C++(0.008)
/*******************************************************/
/* UVa 11204 Musical instruments */
/* Author: Maplewing [at] knightzone.studio */
/* Version: 2012/09/16 */
/*******************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
int testcase, N, M;
int instfirst[35], student, answer;
while( scanf( "%d", &testcase ) != EOF ){
for( int i = 0 ; i < testcase ; i++ ){
scanf( "%d%d", &N, &M );
memset( instfirst, 0, sizeof(instfirst) );
for( int j = 0 ; j < M ; j++ )
for( int k = 0 ; k < N ; k++ ){
scanf( "%d", &student );
if( student == 1 ) instfirst[k]++;
}
answer = 1;
for( int j = 0 ; j < N ; j++ )
if( instfirst[j] > 1 ) answer *= instfirst[j];
printf( "%d\n", answer );
}
}
return 0;
}