第一题:
题目描述:
某班有 n 个学生,编号 1∼n。
他们上学期的编程成绩分别为 a1,a2,…,an。
他们本学期的编程成绩分别为 b1,b2,…,bn。
请你判断,是否有学生出现成绩退步的情况。
输入格式
第一行包含整数 n。
第二行包含 n个整数 a1,a2,…,an。
第三行包含 n个整数 b1,b2,…,bn。
输出格式
如果有学生出现成绩退步的情况,则输出
YES
,否则,输出NO
。
数据范围
前 3 个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤100,1≤ai,bi≤100。
输入样例1:
3
100 80 70
100 90 100
输出样例1:
NO
输入样例2:
3
80 70 90
79 100 100
输出样例2:
YES
AC代码:
#include<iostream>
using namespace std;
const int N = 110;
int a[N],b[N];
int main()
{
int n;
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n;i++) cin >> b[i];
for (int i = 0; i < n; i ++ )
{
if(a[i] > b[i]){
printf("YES");
return 0;
}
}
printf("NO");
return 0;
}
第二题:
题目描述:
贝茜盖了一面长方形的墙,该墙恰好由 N×M 个边长为 1 的正方形砖块堆叠而成。
作为一头缺乏生活常识的奶牛,它并不懂得使用水泥等胶凝材料让墙变得坚固。
所以仅仅一场台风,就让该墙变为了残垣断壁。
墙面上的一些砖块还存在(用
B
表示),另一些砖块已经消失了(用.
表示)。受重力影响,每个幸存的砖块要么位于地面上(最下面一行),要么位于另一块砖块的顶部,不会出现浮空而立的超自然情况。
给定墙面的现状,请你分析当前墙面中一共包含多少个由砖块构成的连通块。
每个砖块视为与其上、下、左、右四个邻近砖块相连。
输入格式
第一行包含两个整数 N,M。
接下来 N 行,包含一个 N×M 的由
B
和.
构成的字符矩阵,表示整面墙体的当前状况。输入保证至少存在一个砖块。
输出格式
一个整数,表示当前墙面中包含的由砖块构成的连通块的数量。
数据范围
前 3个测试点满足 1≤N,M≤10。
所有测试点满足 1≤N,M≤100。
输入样例1:
3 7
.......
.......
.BB.B..
输出样例1:
2
输入样例2:
4 5
..B..
..B..
B.B.B
BBB.B
输出样例2:
2
输入样例3:
4 6
..B...
B.B.BB
BBB.BB
BBBBBB
输出样例3:
1
AC代码:
此题与本人之前发过的一个海战的题类似
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
char g[N][N];
int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};
int n,m;
void dfs(int x,int y)
{
g[x][y] = '.';
for(int i=0;i<4;i++)
{
int a = x + dx[i],b = y + dy[i];
if(a >= 0 && a < n && b >= 0 && b < m && g[a][b] == 'B')
{
dfs(a,b);
}
}
return;
}
int main()
{
cin.tie(0)->ios::sync_with_stdio(false);
int ans=0;
cin >> n >> m;
for(int i=0;i<n;i++)
{
for(int j = 0 ;j < m ; j++)
{
cin >> g[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(g[i][j] == 'B')
{
ans++;
dfs(i,j);
}
}
}
cout << ans << endl;
return 0;
}