You are given n switches and m lamps. The i-th switch turns on some subset of the lamps. This information is given as the matrix aconsisting of n rows and m columns where ai, j = 1 if the i-th switch turns on the j-th lamp and ai, j = 0 if the i-th switch is not connected to the j-th lamp.
Initially all m lamps are turned off.
Switches change state only from "off" to "on". It means that if you press two or more switches connected to the same lamp then the lamp will be turned on after any of this switches is pressed and will remain its state even if any switch connected to this lamp is pressed afterwards.
It is guaranteed that if you push all n switches then all m lamps will be turned on.
Your think that you have too many switches and you would like to ignore one of them.
Your task is to say if there exists such a switch that if you will ignore (not use) it but press all the other n - 1 switches then all the m lamps will be turned on.
The first line of the input contains two integers n and m (1 ≤ n, m ≤ 2000) — the number of the switches and the number of the lamps.
The following n lines contain m characters each. The character ai, j is equal to '1' if the i-th switch turns on the j-th lamp and '0' otherwise.
It is guaranteed that if you press all n switches all m lamps will be turned on.
Print "YES" if there is a switch that if you will ignore it and press all the other n - 1 switches then all m lamps will be turned on. Print "NO" if there is no such switch.
4 5 10101 01000 00111 10000
YES
4 5 10100 01000 00110 00101
NO
题意:n个开关m栈灯,每行对应第i个开关能开的灯,1位能开,0不能,灯开了就不会被关了,初始为全灭,保证按下所以开关灯全亮,如果只开n-1个开关能全亮输出yes否则输出no
题解:一个数组记录一下能开第i盏灯的有多少个开关,最后暴力一下不按其中一个开关,k【i】是否依旧大于0
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int k[2200];//记录第几个灯有多少个开关可以开
string a[2200];
int main()
{
cin>>n>>m;
for(int i=0;i<=m;i++)
k[i]=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
for(int j=0;j<m;j++)
{
if(a[i][j]=='1')
k[j]++;
}
}
int pi=1;
for(int i=0;i<n;i++)
{
pi =1;//pi状态要重新初始化,否则w7
for(int j=0;j<m;j++)
{
if(a[i][j]=='1'&&k[j]<=1)
{
pi=0;
break;
}
}
if(pi)
break;
}
if(pi)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}