c++算法:计算差值,得出结果

来源:百度知道 编辑:UC知道 时间:2024/07/11 11:54:03
用户按顺序从小到大输入六个整数,那么请用C++语法计算六个数之间的差值。并且计算一共有多少个不同的差值,得到的差值个数cin>>R;另外,如果有两个或多个差值相同,那么只算一个。
麻烦各位帮帮小弟,谢谢

得到的差值个数cin>>R;

这是什么意思呢?

#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int> v(6,0), diff;
cout << "input 6 integers in ascending order: ";
for (int i = 0; i < 6; i++) cin >> v[i];
for (int i = 0; i < 6; i++)
for (int j = 0; j < 6; j++)
diff.push_back(abs(v[i] - v[j]));
sort(diff.begin(), diff.end());
vector<int>::iterator it = unique(diff.begin(), diff.end());
diff.resize(it - diff.begin());
copy(diff.begin(), diff.end(), ostream_iterator<int>(cout, " "));
cout << endl << "Total: " << diff.size() << endl;
return 0;
}

运行一下:

input 6 integers in ascending order: 1 2 3 4 5 6
0 1 2 3 4 5
Total: 6

input 6 integers in ascendi