算法有问题,中午改了% X5 k2 y, ^5 B" y
/ y- w& Q0 `# @' `1 p k
#include <iostream>
# Z* e l5 R( e/ y i( `( R#include <vector>
h% a$ j4 J' D9 x* ?#include <set>
7 ?6 a9 b. ]' K' \% w1 q6 p) K#include <iterator>4 z5 q4 [" P2 S
#include <numeric>
( Q7 m" W5 [* C/ w" @#include <algorithm>
( l: m; V3 ]2 Q, Q. Y# {# W" Vint main() {* H3 l5 w2 |) v3 V& R( g' t
std::vector<float> v; //v.end()-1是要凑的结果
' X+ |( p2 S6 [6 |1 Wstd::copy(std::istream_iterator<float>(std::cin), std:: istream_iterator<float>(), std::back_inserter(v));8 S' J! R& s# |7 m1 X# q2 k
std::set<float> s; ; W; {$ g9 R4 H5 m7 A& F
std::vector<float> temp1(v);
; e1 }+ X4 g; zstd::vector<float> temp2(v);( b% i+ d/ f) ^; K2 V8 D
std::vector<float> vv;
, ]. U! ]/ T" m7 I! M. B8 ^# kfor(int i(0); i<v.size()-2; ++i) {
0 Q6 c& K. z7 `, _std:: partial_sum(temp1.begin(), temp1.end() - 1, std::back_inserter(vv));# |3 O; ?8 J8 x/ Y
vv.erase(find(vv.begin(), vv.end(), *temp1.begin()));
0 h$ o. k3 f; J( o, ~for(int j(0); j<temp1.size()-3; ++j) {
4 j5 S1 d' d; l7 V" P; o+ M1 S; vtemp2.erase(temp2.begin()+1);) s3 @) K/ ~; r9 x0 E5 J
std:: partial_sum(temp2.begin(), temp2.end() - 1, std::back_inserter(vv));
1 |5 j ?1 f3 u) J& @, ~4 Tvv.erase(find(vv.begin(), vv.end(), *temp2.begin()));
$ z, p o3 ]7 T% g; M$ [}
; {3 Q# u' ^. X; R' y7 Ftemp1.erase(temp1.begin());
+ d- d" C* _0 t. wtemp2=temp1; 4 o$ @/ S7 W. j, M% b# v# V
}
2 _1 x2 B/ q' pstd::copy(vv.begin(), vv.end(), std::inserter(s, s.begin())); % r7 O( I( W% ~
s.insert(*(v.end()-1));
9 X$ z S, @3 _' O- [1 A) estd::copy(s.begin(), s.end(), std:: ostream_iterator<float>(std::cout, " "));
5 f# o& u) M! v$ |' Xsystem("pause");& m5 q; h" D1 g8 Q! t! ^
}& N! o; d( v" G* K
. o" e9 n* W$ N
: r1 v" j, B+ {! ^9 ^% m8 U
5 n% D p# \( B看看对不对?