num1:
code:该题使用C语言
include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
printf("L");
for(int i=0;i<n;i++)
{
printf("o");
}
printf("ng");
}
解题思路:直接打印出L与ng,其次使用循环输出n个o即可。
num2:
code:C++语言
include
include
include
include
bool isYes(const std::string& s)
{
std::string lower_s = s;
std::transform(lower_s.begin(), lower_s.end(), lower_s.begin(),
[](unsigned char c){ return std::tolower(c); });
return lower_s == "yes";
}
int main()
{
int t;
std::cin >> t;
std::string s;
for (int i = 0; i < t; ++i)
{
std::cin >> s;
if (isYes(s)) {
std::cout << "YES\n";
} else {
std::cout << "NO\n";
}
}
return 0;
}
解题思路:首先定义函数isYes实现字符串大小写不敏感比较,判断输入是否等于"yes"。在main函数中,读取字符串数量,循环读取每个字符串并调用isYes判断,根据结果输出"YES"或"NO",从而实现对一系列输入的处理。
num3:
code:C++语言
include
include
std::string getParity(const std::string& number)
{
char lastDigit = number.back();
int digit = lastDigit - '0';
return (digit % 2 == 0) ? "even" : "odd";
}
int main()
{
int N;
std::cin >> N;
std::string number;
for (int i = 0; i < N; ++i) {
std::cin >> number;
std::cout << getParity(number) << std::endl;
}
return 0;
}
解题思路:定义一个函数getParity,通过获取字符串形式数字的最后一位字符,计算其数值并判断奇偶性,返回对应字符串("even"或"odd")。在main函数中,读取数字数量并循环读取每个数字字符串,调用getParity并输出结果。
num4:
code:C++语言
include
include
include
include
int main() {
int t;
std::cin >> t;
while (t--)
{
int n, m;
std::cin >> n >> m;
std::string a;
std::cin >> a;
std::vector
for (char c : a)
{
count[c - 'A']++;
}
int missing = 0;
for (int i = 0; i < 7; ++i)
{
if (count[i] < m)
{
missing += m - count[i];
}
}
std::cout << missing << std::endl;
}
return 0;
}
解题思路:程序旨在处理多组数据,每组数据首先读取一个未使用的整数(可能是原题目的一部分被省略),紧接着读取一个目标次数m和一个仅包含大写英文字母A至G的字符串。对于每组数据,程序使用一个大小为7的整数向量来统计字符串中每个字母的出现次数。然后,程序遍历这个向量,计算为了达到每个字母都至少出现m次所需补充的总次数(即缺失次数)。最后,程序输出每组数据的总缺失次数。
num5:
code:C++语言
include
using namespace std;
int main()
{
float n, m, k;
cin >> n >> m >> k;
int i,j,sum1=0,sum2=0;
int a[1500][1500];
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
for (i = 1; i <= m; i++)
{
sum1 = 0;
for (j = 1; j <= n; j++)
{
if (a[i][j] == k)
sum1++;
}
if (sum1 >= n / 2)
sum2++;
}
if (sum2 >= m / 2)
cout << "YES";
else
cout << "NO";
return 0;
}
解题思路:首先接收三个输入值(尽管以浮点数接收,但实质作为整数处理),分别代表矩阵的列数n、行数m和特定值k。然后,声明一个二维数组a用于存储m行n列的矩阵数据。通过双层循环读取矩阵的每个元素。再次利用双层循环遍历矩阵,统计每行中值等于k的元素个数,若某行满足该个数大于等于n的一半,则计数器sum2加1。最后,判断sum2是否大于等于m的一半,若是则输出"YES",否则输出"NO"。
num6:
code:C++语言
include
using namespace std;
int main()
{
int n, i, j, q;
cin >> n;
char s[n], c, d;
for (i = 0;i < n;i++)
{
cin >> s[i];
}
cin >> q;
for (i = 0;i < q;i++)
{
cin >> c >> d;
for (j = 0;j < n;j++)
{
if (s[j] == c)
{
s[j] = d;
}
}
}
for (i = 0;i < n;i++)
{
cout << s[i];
}
system("pause");
return 0;
}
解题思路:首先,接收一个整数n作为字符串长度,并据此声明字符数组s。随后,通过循环读取n个字符填充到s中。接着,读取一个整数q,代表接下来要进行的字符替换操作次数。对于每次操作,读取两个字符c和d,遍历字符串s,将所有c替换为d。完成所有替换后,再次遍历s并输出修改后的字符串。(但该题运行超时,仍然有改进空间)
num7:
code:C++语言
include
include
include
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> matrix(n, vector<int>(n));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin >> matrix[i][j];
}
}
vector<int> row_map(n), col_map(n);
for (int i = 0; i < n; ++i) {
row_map[i] = i;
col_map[i] = i;
}
for (int i = 0; i < m; ++i) {
int op, x, y;
cin >> op >> x >> y;
--x; --y;
if (op == 0) {
swap(col_map[x], col_map[y]);
} else {
swap(row_map[x], row_map[y]);
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[row_map[i]][col_map[j]] << (j == n - 1 ? '\n' : ' ');
}
}
return 0;
}
解题思路:首先,接收矩阵大小n和操作次数m,然后读取n×n矩阵的元素。接着,初始化两个映射数组row_map和col_map,用于记录行和列的原始索引。根据输入的操作指令(行交换或列交换),更新row_map和col_map的映射关系。最后,通过遍历矩阵,并利用row_map和col_map进行索引映射,输出经过所有交换操作后的矩阵。
心得体会:ACM算法竞赛题目更多偏向于对于算法的思考,对于代码实现的难度较低,需要用更加多的精力投入于算法的改进思考。
标签:std,map,int,cin,ACM,++,寒假,include,集训 From: https://www.cnblogs.com/603751139-qq-com/p/18687772