编一道很难的c++一维数组题,并有6个输入输出样例,与正确代码
时间: 2023-08-08 19:04:17 浏览: 210
题目描述:
给定一个长度为n的一维数组a,对于每个下标i,计算从a[0]到a[i]的元素之和,并将结果存储在另一个数组sum中,即sum[i] = a[0] + a[1] + ... + a[i]。请编写一个程序来实现此功能。
输入格式:
第一行包含整数n。
第二行包含n个整数,表示数组a中的元素。
输出格式:
输出n个整数,表示数组sum中的元素。
输入样例:
5
-2 0 3 -5 2
输出样例:
-2 -2 1 -4 -2
输入样例2:
10
1 2 3 4 5 6 7 8 9 10
输出样例2:
1 3 6 10 15 21 28 36 45 55
输入样例3:
3
1 2 3
输出样例3:
1 3 6
输入样例4:
7
-1 -2 -3 0 1 2 3
输出样例4:
-1 -3 -6 -6 -5 -3 0
输入样例5:
7
1 0 -1 2 -2 3 -3
输出样例5:
1 1 0 2 0 3 0
输入样例6:
5
10 20 30 40 50
输出样例6:
10 30 60 100 150
正确代码:
相关问题
编一道很难的c++一维数组题,并有10个输入输出样例,与正确代码
题目描述:
给定一个长度为n的一维数组a,每次可以选择其中一个元素a[i],使得a[i]的值加上1或者减去1。请你计算将该数组所有元素都变为相等的值所需要的最小操作次数。
输入格式
第一行包含一个整数n。
第二行包含n个整数,表示数组a中的n个元素。
输出格式
输出一个整数,表示将该数组所有元素都变为相等的值所需要的最小操作次数。
输入样例
5
1 2 3 4 5
输出样例
6
输入样例2
6
1 2 3 4 5 100
输出样例2
104
限制条件
1≤n≤105,1≤ai≤105。
时间限制:1秒
空间限制:256MB
正确代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n;
int a[N];
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ ) cin >> a[i];
sort(a, a + n);
int res = 0;
for (int i = 0, j = n - 1; i < j; i ++, j -- )
res += a[j] - a[i];
cout << res << endl;
return 0;
}
```
输入输出样例:
输入样例1:
```
5
1 2 3 4 5
```
输出样例1:
```
6
```
输入样例2:
```
6
1 2 3 4 5 100
```
输出样例2:
```
104
```
输入样例3:
```
3
2 2 2
```
输出样例3:
```
0
```
输入样例4:
```
3
1 100000 50000
```
输出样例4:
```
149999
```
输入样例5:
```
5
1 4 5 2 3
```
输出样例5:
```
6
```
输入样例6:
```
7
10 9 8 7 6 5 4
```
输出样例6:
```
18
```
输入样例7:
```
4
100 100 100 100
```
输出样例7:
```
0
```
输入样例8:
```
1
1
```
输出样例8:
```
0
```
输入样例9:
```
2
1 100000
```
输出样例9:
```
99999
```
输入样例10:
```
2
100000 1
```
输出样例10:
```
99999
```
编一道特别难的c++一维数组题,并有10个输入输出样例,与正确代码
好的,以下是一道难度较高的 C++ 一维数组题目:
题目描述:
给定一个长度为 n 的一维数组,其中每个元素的值为 0 或 1。你需要设计一个算法,使得将数组中所有的 0 都移到数组的左边,所有的 1 都移到数组的右边,并返回 0 元素的个数。
函数签名:int moveZeroes(int nums[], int n)
输入:
- nums:长度为 n 的一维数组
- n:数组的长度
输出:
- 返回 0 元素的个数
例子:
输入:
```
nums = [1, 0, 1, 0, 1, 0]
n = 6
```
输出:
```
3
```
输入:
```
nums = [1, 0, 0, 0, 1, 0, 1, 0, 1]
n = 9
```
输出:
```
4
```
输入:
```
nums = [0, 0, 0, 0, 0, 0]
n = 6
```
输出:
```
6
```
输入:
```
nums = [1, 1, 1, 1, 1, 1]
n = 6
```
输出:
```
0
```
输入:
```
nums = [0, 1, 0, 1, 0, 1]
n = 6
```
输出:
```
3
```
输入:
```
nums = [1, 1, 0, 0, 1, 1]
n = 6
```
输出:
```
2
```
输入:
```
nums = [0, 0, 1, 1, 0, 0]
n = 6
```
输出:
```
4
```
输入:
```
nums = [0, 1, 1, 1, 1, 1]
n = 6
```
输出:
```
1
```
输入:
```
nums = [1, 1, 1, 1, 1, 0]
n = 6
```
输出:
```
1
```
输入:
```
nums = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
n = 10
```
输出:
```
5
```
正确代码:
```c++
int moveZeroes(int nums[], int n) {
int left = 0, right = n - 1;
while (left < right) {
while (left < right && nums[left] == 0) left++;
while (left < right && nums[right] == 1) right--;
if (left < right) {
nums[left] = 0;
nums[right] = 1;
}
}
int cnt = 0;
for (int i = 0; i < n; i++) {
if (nums[i] == 0) cnt++;
}
return cnt;
}
```
阅读全文