提交时间:2021-06-26 20:07:02

运行 ID: 21212

#include<bits/stdc++.h> using namespace std; int a[1005][20],b[20]; int i,j,n,k,flag=1,ans=1; int main(){ cin>>n>>k; for(i=1;i<=n&&flag;i++) { //n个人 for(j=1;j<=k&&flag;j++){//k种配方要求 cin>>a[i][j]; if(a[i][j]==0) continue;//如果是0,不处理 if(b[j]==0) b[j]=a[i][j];//如果第j种配方没有设置,就设置。 else if(b[j]!=a[i][j]) flag=0;//如果读入的配方有矛盾,则无解 } } for(i=1;i<=k;i++){ if(b[i]==0) ans*=2; //配方选择为0,表示可有可无,两种情况,乘法原理 } if(flag) cout<<ans; else cout<<"-1"; return 0; }