本文主要是介绍1.13寒假集训,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
晚上兼职下班回来才有时间写题,早上根本起不来
A:
解题思路:我第一开始以为只要满足两个red以上的字母数量就行,但是过不了,后面才发现是red字符串,直接三个三个判断就行。
下面是c++代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{string s;int r = 0,e = 0,d = 0,sum = 0;cin >> s;for(int i = 0;i < s.length() - 2;i++){if(s[i] == 'r' && s[i + 1] == 'e' && s[i + 2] == 'd'){sum++;}}if(sum >= 2){cout << "Yes";}else{cout << "No";}return 0;
}
B:
解题思路:看示例不难发现只要倒着输出数组就好,我最开始还想模拟题意进行两次翻转。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n,arr[100][100];cin >> n;for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){cin >> arr[i][j];}}for(int i = n - 1;i >= 0;i--){for(int j = n - 1;j >= 0;j--){cout << arr[i][j] << " ";}cout << endl;}return 0;
}
C:
解题思路:只要判断x这个数左边或者右边是否等于y即可
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n,x,y,arr[200000];cin >> n;for(int i = 0;i < n;i++){cin >> arr[i];}cin >> x >> y;for(int i = 1;i < n - 1;i++){if(arr[i] == x && (arr[i + 1] == y || arr[i - 1] == y)){cout << "Yes";return 0;}}cout << "No";return 0;
}
D:
解题思路:
遍历每一个元素的2 * 2 矩阵就好,注意遍历到n - 1行m - 1列就行,如果遍历到n行或者m列,那么就没有2 * 2矩阵了,在判断每个2 * 2矩阵里y o u 三个字母数量最小值是否为1就行。
下面是c++代码:
#include<iostream>
using namespace std;
char arr[1000][1000];
int main()
{int n,m,y = 0,o = 0,u = 0,sum = 0;cin >> n >> m;for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){cin >> arr[i][j];}}for(int i = 0;i < n - 1;i++){for(int j = 0;j < m - 1 ;j++){y = 0,o = 0,u = 0;for(int k = i;k < i + 2;k++){for(int f = j;f < j + 2;f++){if(arr[k][f] == 'y'){y++;}else if(arr[k][f] == 'o'){o++;}else if(arr[k][f] == 'u'){u++;}}}if(min(min(y,o),u) == 1){sum++;}}}cout << sum;return 0;
}
E:
解题思路:
定义初始长度为1,找到稳定数组就加一,不是就重新赋值为1,将每一次的稳定子数组长度与Max比较找最大值。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n,arr[100000],Max = 0,sum = 1;cin >> n;for(int i = 0;i < n;i++){cin >> arr[i];}for(int i = 1;i < n;i++){if(abs(arr[i] - arr[i - 1]) <= 1){sum++;Max = max(Max,sum);} else{sum = 1;}}cout << Max;return 0;
}
这篇关于1.13寒假集训的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!