#P2039. 计算机笔试复习题.10
计算机笔试复习题.10
(4)连续区间
现有 n 个整数,每个整数用 表示()。现希望找出连续的一段区间,要求区间内不能出现重复数字。求符合要求的区间的最大长度。
#include<bits/stdc++.h>
using namespace std;
int n, a[100001], m=-1, b[1000001];
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int 填空(1) ; R<=n; 填空(2))
{
填空(3);
while(填空(4))
{
b[a[L]]--;
L++;
}
m=max(m,填空(5));
}
cout<<m;
return 0;
}
- 填空(1) 处应填{{ select(1) }}
- L=0, R=0
- L=0, R=1
- L=1, R=0
- L=1, R=1
- 填空(2) 处应填{{ select(2) }}
- L++
- R++
- L++,R++
- 不填
- 填空(3) 处应填{{ select(3) }}
- b[a[R]]++
- a[R]++
- b[a[L]]++
- a[L]++
- 填空(4) 处应填{{ select(4) }}
- a[R]>1
- b[a[R]]>1
- a[L]>1
- b[a[L]]>1
- 填空(5) 处应填{{ select(5) }}
- b[a[R]]
- b[a[L]]
- R-L
- R-L+1
(5)风景点
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
填空(1) a[1001][1001];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
bool book=true;
if( 填空(2) )
{
for(int k=1;k<=填空(3) ;k++)
if( 填空(4) != '.') book=false;
for(int k=1;k<=n;k++)
if(a[k][j] != '.') book=false;
if(填空(5)) ans++;
}
}
cout<<ans;
return 0;
}
给出 N 行 M 列的二维格子, 每个格子要么是 '#' ,要么是 '.' 。 一个格子是“ 风景点” ,它同时满足如下两个条件:1、 该格子是‘ .’;2、 该格子的上、 下、 左、 右, 四个方向整条线全部都是‘ .’(该点处于边缘的话可以忽略该点没有的方向,如点在左边缘只需考虑上、下、右三个方向) 。你的任务是统计总共有多少个“ 风景点” 。
- 填空(1) 处应填{{ select(6) }}
- int
- long long
- char
- string
- 填空(2) 处应填{{ select(7) }}
- a[i][j]=='.'
- a[i][j]=='#'
- a[i][j]==1
- a[i][j]==0
- 填空(3) 处应填{{ select(8) }}
- i
- j
- n
- m
- 填空(4) 处应填{{ select(9) }}
- a[i][k]
- a[j][k]
- a[k][i]
- a[k][j]
- 填空(5) 处应填{{ select(10) }}
- a[i][j]=='.'
- a[i][j]=='#'
- book==true
- book==false