
pascal长蛇阵问题: 急急急急急急急急急急急!
1个回答
展开全部
额。。我用了最笨的方法,类似穷举很好懂,只测试了样例,所有数据类型定义的是整型
不能保证数据大了全过,没时间写了
program changshe;
var map:array[1..10000,1..10000] of boolean;
sum:array[1..10000] of integer;
js,i,j,k,m,n,a,x,y,max:integer;
begin
read(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
read(a);
if a=0 then map[i,j]:=false else map[i,j]:=true;
end;
readln;
end;
for i:=1 to n do
for j:=1 to m do
if map[i,j]=true then
begin
inc(js);
k:=i;
while(map[k,j]=true) do
begin
sum[js]:=sum[js]+1;
inc(k);
end;
inc(js);
k:=j;
while (map[i,k]=true) do
begin
inc(sum[js]);
inc(k);
end;
inc(js);
x:=i;y:=j;
while (map[x,y]=true) do
begin
inc(sum[js]);
inc(x);inc(y);
end;
end;
max:=0;
for i:=1 to js do
if sum[i]>max then
max:=sum[i];
write(max);
end.
不能保证数据大了全过,没时间写了
program changshe;
var map:array[1..10000,1..10000] of boolean;
sum:array[1..10000] of integer;
js,i,j,k,m,n,a,x,y,max:integer;
begin
read(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
read(a);
if a=0 then map[i,j]:=false else map[i,j]:=true;
end;
readln;
end;
for i:=1 to n do
for j:=1 to m do
if map[i,j]=true then
begin
inc(js);
k:=i;
while(map[k,j]=true) do
begin
sum[js]:=sum[js]+1;
inc(k);
end;
inc(js);
k:=j;
while (map[i,k]=true) do
begin
inc(sum[js]);
inc(k);
end;
inc(js);
x:=i;y:=j;
while (map[x,y]=true) do
begin
inc(sum[js]);
inc(x);inc(y);
end;
end;
max:=0;
for i:=1 to js do
if sum[i]>max then
max:=sum[i];
write(max);
end.

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询