您的位置:首页 > 其它

第三次月赛题解

2015-06-27 13:59 260 查看
1000

每天只要复习收益最大的那门课即可

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <math.h>
using namespace std;
#pragma warning(disable:4996)
typedef long long LL;
const int INF = 1 << 30;
/*

*/
const int N = 101;
char a

;
int ans;
int vis
;
char in[] = "D:\\3\\1005\\9.in";
char out[] = "D:\\3\\1005\\9.out";
char str[] = "0123456789";
int main()
{

//for (int z = 0; z <= 9; ++z)
{
//in[10] = str[z];
//out[10] = str[z];
//freopen(in, "r", stdin);
//freopen(out, "w", stdout);
int n;
while (scanf("%d", &n) != EOF)
{
memset(vis, 0, sizeof(vis));
for (int i = 0; i < n; ++i)
scanf("%s", a[i]);

ans = 0;
for (int i = 0; i < n; ++i)
{
bool flag = true;
for (int j = 0; j < n; ++j)
if (a[i][j] == '0')
{
flag = false;
break;
}
if (flag)
ans++;
}
int tmp;
for (int i = 0; i < n; ++i)
{
memset(vis, 0, sizeof(vis));
for (int j = 0; j < n; ++j)
{
if (a[i][j] == '0')
vis[j] = true;
}
tmp = 1;
for (int j = 0; j < n; ++j)
{
if (i == j) continue;
bool f = true;
for (int k = 0; k < n; ++k)
if (a[j][k] == '0' && !vis[k])
{
f = false;
break;
}
else if (a[j][k] == '1' && vis[k])
{
f = false;
break;
}
if (f)
tmp++;
}
ans = ans > tmp ? ans : tmp;
}
printf("%d\n", ans);
}
}
return 0;
}


View Code

1005

点这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: