编程题1:
数组里相加为0的数对
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int GetNumber(vector<int> &nums)
{
int count = 0;
int tmp = 0;
int i = 0;
int j = nums.size()-1;
while(i < j)
{
tmp = nums[i] + nums[j];
if(tmp == 0)
{
count++;
i++;
j--;
}
else if(tmp < 0)
{
i++;
}
else
{
j--;
}
}
return count;
}
int main()
{
vector<int> nums;
int num;
//输入!输入!
while(cin >> num)
{
nums.push_back(num);
if(cin.get() == '\n')
{
break;
}
}
sort(nums.begin(),nums.end());
cout << GetNumber(nums) << endl;
return 0;
}
编程题2:
从第一行读入一组整数XS,第二行读入一个整数K,求XS序列中组成的新序列.
例如:xs = {1,2,3,4,5,6,7}; output={2.00 3.00 4.00 5.00 6.00 }
输入:
第一行,空格分隔的n个整数 1 2 3 4 5 6 7
第二行,一个整数k 3
输出: (n-k+1)
2.00 3.00 4.00 5.00 6.00
void Average(vector<int> &nums, int k,vector<double>&vec)
{
int len = nums.size() - k + 1;
int tmp = 0;
for(int i = 0; i < len; i++)
{
for(int j = i; j < k+i; j++)
{
tmp += nums[j];
}
tmp = tmp/k;
vec.push_back(tmp);
}
}
int main()
{
vector<int> nums;
int num;
while(cin >> num)
{
nums.push_back(num);
if(cin.get() == '\n')
{
break;
}
}
vector<double> vec;
int k;
cin >> k;
Average(nums,k,vec);
for(int i = 0; i < vec.size(); i++)
{
cout << setiosflags(ios::fixed) <<
setprecision(2) << vec[i] << " ";
}
cout << endl;
return 0;
}