1、相邻数对
题目链接:https://sim.csp.thusaac.com/contest/2/problem/0
本题和第1次认证的第1题“相反数”差不多,都是考察循环遍历比较和计数。
100分代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int n;
cin >> n;
int a[1010];
for(int i = 0; i < n; i++){
cin >> a[i];
}
int ans = 0;
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++){
if(abs(a[i] - a[j]) == 1)ans++;
}
}
cout << ans << endl;
return 0;
}
评测结果:
2、画图
题目链接:https://sim.csp.thusaac.com/contest/2/problem/1
本题的思路是:声明一个二维的面积标志数组,并将全部数组元素值初始化为0,每输入一个矩形的坐标信息后,就将数组中下标位于该矩形坐标范围内的元素赋值为1,当所有矩形坐标信息输入完毕后,将数组中值为1的元素叠加起来,就是所有矩形区域的面积。
100分代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int n;
cin >> n;
int x1,y1,x2,y2;
int a[110][110] ={0};
int area = 0;
for(int i = 0; i < n; i++){
cin >> x1 >> y1 >> x2 >> y2;
for(int j = x1; j < x2; j++){
for(int k = y1; k < y2; k++){
a[j][k] = 1;
}
}
}
for(int i = 0; i < 100; i++){
for(int j = 0; j < 100; j++){
if(a[i][j] == 1)area += a[i][j];
}
}
cout << area << endl;
return 0;
}
评测结果:
3、字符串匹配
题目链接:https://sim.csp.thusaac.com/contest/2/problem/2
100分代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
string str;
cin >> str;
int len1 = str.length();
int flag;
cin >> flag;
int n;
cin >> n;
string STR;
for(int i = 0; i < n; i++){
cin >> STR;
int len2 = STR.length();
for(int j = 0; j < len2; j++){
int count = 0;
if(str[0] == STR[j] && flag == 1){
for(int k = 0; k < len1; k++){
if(str[k] == STR[j+k])count++;
else count = 0;
}
if(count == len1){
cout << STR << endl;
break;
}
}
else if((abs(str[0] - STR[j]) == 32 && ((str[0] >= 'a' && str[0] <= 'z' && STR[j] >= 'A' && STR[j] <= 'Z')
|| (str[0] >= 'A' && str[0] <= 'Z' && STR[j] >= 'a' && STR[j] <= 'z')))
|| (str[0] == STR[j] && ((str[0] >= 'A' && str[0] <= 'Z' && STR[j] >= 'A' && STR[j] <= 'Z')
|| (str[0] >= 'a' && str[0] <= 'z' && STR[j] >= 'a' && STR[j] <= 'z'))) && flag == 0){
for(int k = 0; k < len1; k++){
if((abs(str[k] - STR[j+k]) == 32 && ((str[k] >= 'a' && str[k] <= 'z' && STR[j+k] >= 'A' && STR[j+k] <= 'Z')
|| (str[k] >= 'A' && str[k] <= 'Z' && STR[j+k] >= 'a' && STR[j+k] <= 'z')))
|| (str[k] == STR[j+k] && ((str[k] >= 'A' && str[k] <= 'Z' && STR[j+k] >= 'A' && STR[j+k] <= 'Z')
|| (str[k] >= 'a' && str[k] <= 'z' && STR[j+k] >= 'a' && STR[j+k] <= 'z'))) && flag == 0)count++;
else count = 0;
}
if(count == len1){
cout << STR << endl;
break;
}
}
}
}
return 0;
}
评测结果: