1 校门外的树(有意思)
这一题主要是要注意开的动态数组的个数,也就是要用到哪个数据。我们需要使用从0~L,因此要开L+1个空间。如果我们只需要使用0-L-1,那么开L个空间就可以了。
2 P1427 小鱼的数字游戏
了解判断终结输入的方法,另外对for的提前越界要注意!
题目描述
小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。
输入格式
一行内输入一串整数,以0结束,以空格间隔。
输出格式
一行内倒着输出这一串整数,以空格间隔。
输入输出样例
输入 #1复制
3 65 23 5 34 1 30 0
输出 #1复制
30 1 34 5 23 65 3
#include<iostream>
using namespace std;
int main() {
int a[100];
int num;
int i;
for ( i = 0; i < 100; i++) {
cin >> num;
if (num == 0)break;
a[i] = num;
}
for (i--; i >= 0; i--) {
cout << a[i] << " ";
}
return 0;
}
P1428 小鱼比可爱
主要训练了一下开数组的操作。
题目描述
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式
第一行输入一个整数n,表示鱼的数目。
第二行内输入n个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。
输出格式
行内输出n个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
输入输出样例
输入 #1复制
6
4 3 0 5 1 2
输出 #1复制
0 0 0 3 1 2
说明/提示
n<=100
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int* a = new int[n + 1];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int count = 0;
int* res = new int[n + 1];
for (int i = 1; i <= n; i++) {
count = 0;
for (int j = 1; j < i; j++) {
if (a[j] < a[i])count++;
}
res[i] = count;
}
for (int i = 1; i <= n; i++) {
cout << res[i] << " ";
}
return 0;
}
P2141 珠心算测验(有意思)
这个题目我的想法一个是用三重循环,一个是用set.find来找。但是感觉都没有什么意思,打算暂时留下这题。
后来看了别人的算法,感觉桶排枚举有时候真的有效,而且也并不low。尝试着自己写了一下。
这题主要是关于数组的记录和枚举桶排的联系。
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
(本题目为2014NOIP普及T1)
输入格式
共两行,第一行包含一个整数nn,表示测试题中给出的正整数个数。
第二行有nn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式
一个整数,表示测验题答案。
输入输出样例
输入 #1复制
4
1 2 3 4
输出 #1复制
2
说明/提示
【样例说明】
由1+2=3,1+3=41+2=3,1+3=4,故满足测试要求的答案为22。
注意,加数和被加数必须是集合中的两个不同的数。
【数据说明】
对于100%100%的数据,3 ≤ n ≤ 1003≤n≤100,测验题给出的正整数大小不超过10,00010,000。
#include<iostream>
#include<climits>
using namespace std;
int main() {
const int M = 20005;
int t[M], g[M];
int n;
cin >> n;
int num;
for (int i = 0; i < M; i++) {
t[i] = g[i] = 0;
}
for (int i = 0; i < n; i++) {
cin >> num;
g[num] = 1;
}
int max = INT_MIN;
for (int i = 1; i < M; i++) {
for (int j = i + 1; j < M; j++) {
if (g[i] && g[j]) {
t[i + j] = 1;
max = max > (i + j) ? max : (i + j);
}
}
}
int count = 0;
for (int i = 1; i <= max; i++) {
if (t[i] != 0&&g[i]!=0)count++;
}
cout << count;
return 0;
}
P1567 统计天数
一个求最长连续子序列的题,考虑使用动态规划来做。
题目描述
炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续 N(1 \leq N \leq 10^6)N(1≤N≤10
6
) 的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数。
输入格式
第 1 行:一个整数 NN 。1 \leq N \leq 10^61≤N≤10
6
第 2 行:NN个空格隔开的整数,表示连续 NN 天的最高气温。0 \leq0≤ 最高气温 \leq 10^9≤10
9
。
输出格式
1 行:一个整数,表示最高气温一直上升的最长连续天数。
输入输出样例
输入 #1复制
10
1 2 3 2 4 5 6 8 5 9
输出 #1复制
5