B
比赛时没有想到再设一个字符串数组表示两个字符相加,对于sort函数以及字符串长度s.length()应用不熟练,定义记不熟,应多熟练。
#include<bits/stdc++.h> 或//#include<iostream>
//#include<string>
//#include<algorithm>
using namespace std;
string strs[101010]; //建立一个数组
int main()
{
string s;
cin>>s;
int n=s.length();
int i;
for(i=1;i<s.length();i++){
string temp;
temp+=s[i-1];
temp+=s[i];
str[i-1]=temp;}
sort(strs,strs+n-1); //sort函数 sort(start,end,排序方式)排序方式为可选参数,若没有默
认为升序
for(i=0;i<n-1;i++){
cout<<strs[i]<<endl;
}
return 0;
}
C
做该题时,找到了规律但不知道如何用C语言写出来,没有思路,对于C语言的应用掌握不够好,应多加熟练。
#include<iostream>
using namespace std;
int dp[1010]; //设立数组
int main()
{
int n,m,k;
cin>>n>>m>>k;
while(k--){
int x,y;
cin>>x>>y;
下面的代码思路还有些不太理解,看了B站上讲得,需要再多看几遍巩固一下。
x--;y--; //下标从0开始,所以减一下
if(dp[y]<=x) dp[y]++;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++){
if(dp[j]>i) cout<<"."; //空的砖块
else cout<<"*"; //有的砖块
}
cout<<endl;
}
return 0;
}
D
当时该题不会,看完视频后,对于题解的思路理解较浅,该题应多看,多做几次。
#include<iostream>
using namespace std;
int a[100010];
int main()
{
long long n,k,i;
cin>>n>>k;
for(i=1;i<=n;i++) cin>>a[i];
int j=1;
long long sum=0,res=0; //区间为[j,i]
for(i=1;i<=n;i++){
sum+=a[i]; //右端点往右移
while(sum>=k){
sum-=a[j]; //左端点往右移
j++; //计算每次数
}
res+=j-1; //j的初始下标为一
cout<<res;
return 0;
}
暂时补了这几道题,对于C、D题,还有一些内容不能深入理解,有疑问,之后会多看这几道题,多思考,争取掌握这些知识,还有E、F题没有补,等看懂后会补上。