题意:输入一个n*m的表格 询问q次 表格内只含有0和1 每次询问输入单元的行列 若为1则变成0 若为0则变成1 输出每次询问后该表格中行的最长连续1
比较麻烦 水一发~
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,q;
int grid[510][510];
int maxlen[510];
int find_max(int row)
{
int Max=0,s=1,Max1=0;
for(int i=s;i<=m;i++)
{
if(grid[row][i]==1)
{
for(int j=i;j<=m;j++)
{
if(grid[row][j]==1)
Max1++;
if(j==m)
{
Max=max(Max,Max1);
Max1=0;
}
if(!grid[row][j])
{
Max=max(Max,Max1);
Max1=0;
}
}
}
}
return Max;
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&q))
{
memset(grid,-1,sizeof(grid));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&grid[i][j]);
for(int i=1;i<=n;i++)
{
grid[i][m+1]=find_max(i);
}
int qi,qj;
while(q--)
{
scanf("%d%d",&qi,&qj);
if(grid[qi][qj])
grid[qi][qj]=0;
else
grid[qi][qj]=1;
grid[qi][m+1]=find_max(qi);
int MAX=-1;
for(int i=1;i<=n;i++)
{
if(MAX<grid[i][m+1])
MAX=grid[i][m+1];
}
printf("%d\n",MAX);
}
}
return 0;
}