题意:
给n个开关,第n个开关对应的连通灯泡,在矩阵中表示,1表示连通,问可不可以不用一个开关,让所有的灯都亮,(题目保证开n个开关必然可以亮所有灯,每一个灯开了就不能关上了)。
思路:
可以考虑整体按列处理,先求出每一列的和,然后消去一行,将那一行,对应的1删去,如果,最后的每一列的和还是>0,那么就是可以的。
#include <bits/stdc++.h>
#define endl '\n'
#define IOS ios::sync_with_stdio(false);
using namespace std;
typedef long long ll;
const int N = 2e3 + 10;
int n, m;
int w[N][N];
int tong[N];
int main()
{
//IOS; cin.tie(0), cout.tie(0);
cin >> n >> m;
string s;
for (int i = 1; i <= n; ++i)
{
cin >> s;
for (int j = 0; j < s.size(); ++j)
{
if (s[j] == '1')
tong[j + 1]++;
}
}
int flag = 1;
int countt = 0;
for (int i = 1; i <= m; ++i)
{
if (tong[i] == 1)
++countt;
//cout << "tong[" << i << "]" << tong[i] << endl;
}
if (countt >= n)
flag = 0;
if (flag)
cout << "YES" << endl;
else
cout << "NO" << endl;
return 0;
}