Problem 1594 冗余编码.
思路
- 一本正经但是WA了
① 读入结点字符串,按从小到大顺序排序结点
② k=0,flag=0,逐一遍历结点:
k++
对每个能正常接收文件的位置置1
检查是否全部位置置1?是——flag=1,break
③ 读完所有结点,全部文件位置没有都为1(flag=0),k=0
④ 输出k - 兄弟教我的!
竖着读,记录每列0的数量,0最大那一列的0的数量+1即为所求
代码
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
char arr[100][15];
int flag[15];
bool cmp(int a, int b){
if(a!=b)
return a>b;
}
int main(){
int n, m;
while(scanf("%d%d", &n, &m)!=EOF){
getchar();
memset(flag, 0, sizeof(flag));
for(int i=0; i<n; i++){
scanf("%[^\n]%*c", arr[i]);
for(int j=0; j<m; j++)
if(arr[i][j]=='0')
flag[j]++;
}
sort(flag, flag+m, cmp);
printf("%d\n", flag[0]+1);
}
return 0;
}