学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年CSP-J初赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a << "+" << b << "=" << a+b << endl;
}
第23题
输入:3 5
输出:( )
【答案】:3+5=8
【解析】
(简单),注意格式,输出内容中没有空格
#include <iostream>
using namespace std;
int main() {
int a, b, u, i, num;
cin >> a >> b >> u;
num = 0;
for (i=a; i<=b; i++)
if ((i%u)==0) num++;
cout << num << endl;
return 0;
}
第24题
输入:1 100 15
输出:( )
【答案】:6
【解析】
在1到100中,如果是u的倍数,num++,答案为6
#include <iostream>
using namespace std;
int main() {
const int SIZE = 100;
int n, f, i, left, right, middle, a[SIZE];
cin >> n >> f;
for (i=1; i<=n; i++)
cin >> a[i];
left = 1;
right = n;
do {
middle = (left+right) / 2;
if (f<=a[middle])
right = middle;
else
left = middle + 1;
} while (left < right);
cout << left << endl;
return 0;
}
第25题
输入:
12 17
2 4 6 9 11 15 17 18 19 20 21 25
输出:( )
【答案】:7
【解析】
二分法,查找f那个数字所在的下标
#include <iostream>
using namespace std;
int main() {
const int SIZE=100;
int height[SIZE], num[SIZE], n, ans;
cin >> n;
for (int i=0; i<n; i++) {
cin >> height[i];
num[i] = 1;
for (int j=0; j<i; j++) {
if ((height[j]<height[i]) && (num[j]>=num[i]))
num[i] = num[j] + 1;
}
}
ans = 0;
for (int i=0; i<n; i++) {
if (num[i]>ans) ans = num[i];
}
cout << ans << endl;
}
第26题
输入:
6
2 5 3 11 12 4
输出:( )
【答案】:4
【解析】
求最长上升子序列
代码7-12行求出num数组:1 2 2 3 4 3
代码16-17用来求num数组中的最大值,为4
标签:26,int,namespace,cin,初赛,num,解析,CSP,SIZE From: https://blog.csdn.net/guolianggsta/article/details/140918633