发新话题
打印

来, 给大家出道题目做做.

看来都比较受梏于书本上的知识,拿到实际上就没想法了。概观大部分的回帖都只是对排序有想法……      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

我前面也说错了,不是排列的算法,而是组合的算法……% t% _3 o8 ]8 {2 `, i' Y
不过也没人指出……      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

再猜一次吧,算出所有可能和的结果,跟所求比较。      

TOP

先给个程序,看看对不对?
2 ~" y3 o; t2 u: p$ |, s- d6 h ; d* o' v0 [" h) D
#include <iostream>% E& e6 X5 a; n3 R5 w) |
#include <vector>
9 g5 e3 r" J/ t) W#include <set>
& b  d+ [  x( Q- ^1 `# W#include <iterator>- A" v  T, w4 m6 L
#include <numeric>. n) }/ b  w) w3 u$ D
   
; `$ Y4 u& `/ Q! _5 X/ Fint main() {
" U8 c# D; x( A: j' e. V, Z    std::vector<float> v;              //v.end()-1是要凑的结果
0 a; N, L, ^3 G' x" a: D    std::copy(std::istream_iterator<float>(std::cin), std:: istream_iterator<float>(), std::back_inserter(v));
" l- ^# i9 Q6 Y- p+ s: I% ]    std::set<float> s; 9 A( \! J- B# \. L: D
    for(std::vector<float>::iterator vi = v.begin(); vi != v.end() - 1; ++vi) std:: partial_sum(vi, v.end() - 1, std::inserter(s, s.begin())); & m8 r' E4 }- [9 h" [# D
    s.insert(*(v.end()-1));
5 a, U5 i* w, i    std::copy(s.begin(), s.end(), std:: ostream_iterator<float>(std::cout, " "));
" p4 {, o+ H& d    system("pause"); 8 E9 }+ z( w0 n* ?: g2 d  Z
}
% W8 x) y$ f6 L8 L+ r2 |5 N, D, Y
7 h" a, K  ~) ~  p  h4 X$ G
题目举例 2' `# H6 i; `4 `% \
输入:; p! V* h8 ~6 O
1.235 ?$ U3 e/ b2 e) Z
-2.10 A" u* Q% `' I' n
28
! }  g$ V3 i% Z& k5 u# b- v-10.2 ////这个是需求的结果9 r2 N. @2 ^9 C9 t
a ////这个是用于输入结束用的) |( c% ^/ a  h

0 s" B: ~5 m. A$ W结果全打出来了,是排序的,自己找找吧,那个离-10.2近(懒的去判断了)
! J9 ~. d4 {. V1 Y2 h4 K% u$ i还有就是正好等于-10.2时,也没判断(还是懒)      

TOP

还有原来给出的数算不算?
" ^' i$ }& ^( d/ m# T-2.1 明显比 -0.87 要跟 -10.2近。+ Y, P3 l% z& ^. T0 a
要是不包含原来的数,必须得加的话,for_each(..., erase), erase好了。      

TOP

都懒得去判断, 那还做什么题目?/ r% g# f0 `- _3 k- O6 i
需要打印的必须要打印.
# _% M4 L7 G5 y! Z  Q程序是严谨的. 怎么能说懒得做就不做呢?9 ?( D; E7 m& C% I

0 `$ I4 ?0 r, Q% q) M, h原来给出的算子当然不算在内了.8 P3 m  S2 g9 e& |2 o4 x1 u1 l: |
. k* k. \7 N3 D- @" m$ X* m
另, 楼上的代码, 是错误的.
3 I, j  P' {/ {' J3 f1 N2 ]
; Y6 c  ?/ w" e/ K* l9 X如果要做,就认真的做,做的对不对是另外一回事,态度很重要!      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

算法有问题,中午改了
5 Z5 F3 U/ E6 g 0 x& J5 h+ M" X: b9 q, x
#include <iostream>
7 D: j" e- q- {9 B2 g, X7 d0 ^! k#include <vector>
6 M% Y( D+ l, N3 y4 [4 _#include <set>, l: T* j; z6 H( K
#include <iterator>
) n$ @: `+ L* u5 R#include <numeric>
4 O- b1 D0 L" D: q  z2 o#include <algorithm>
9 Y  w9 ]1 |* i9 w  S$ \* @" j4 kint main() {9 a# X. @  K' n9 s  G2 I
std::vector<float> v; //v.end()-1是要凑的结果
7 O+ Z- r5 B$ hstd::copy(std::istream_iterator<float>(std::cin), std:: istream_iterator<float>(), std::back_inserter(v));
5 O# ^5 B+ b) v* Z& ?( j) S: Ystd::set<float> s;
3 w7 V" K2 ^( a8 Nstd::vector<float> temp1(v);1 `" C. C0 J+ Z7 o; o
std::vector<float> temp2(v);' r# `: E! j" K
std::vector<float> vv;
* @0 w3 w9 S" P, v8 `: D4 u. S  E: z2 rfor(int i(0); i<v.size()-2; ++i) { , |9 t8 p. j9 F) i2 c. `
std:: partial_sum(temp1.begin(), temp1.end() - 1, std::back_inserter(vv));- z! I  k( v; z. f7 L6 {. k' M
vv.erase(find(vv.begin(), vv.end(), *temp1.begin()));# l+ I; F# `* ~1 K
for(int j(0); j<temp1.size()-3; ++j) {' j; d0 C. B) M% O+ z
temp2.erase(temp2.begin()+1);
  m+ z6 ?7 z! t3 Zstd:: partial_sum(temp2.begin(), temp2.end() - 1, std::back_inserter(vv));
% ~4 x2 F2 l7 v" l3 F( ^8 uvv.erase(find(vv.begin(), vv.end(), *temp2.begin()));0 r6 Y, q) P% `& m8 s0 }
}
$ [) ]% `* ?0 htemp1.erase(temp1.begin());
( \' A& i% {1 ^temp2=temp1;
! `# V7 {* n% m" [- v}
, A! |3 q5 `; |' `% T6 z: q( Estd::copy(vv.begin(), vv.end(), std::inserter(s, s.begin())); 5 k# s$ a! S5 j3 Q- k& c3 a- {. ^: z
s.insert(*(v.end()-1));
3 `! v) Z: T: P6 l# M9 ^8 zstd::copy(s.begin(), s.end(), std:: ostream_iterator<float>(std::cout, " ")); ! V! _" V8 t8 Q
system("pause");
! s" c+ ]: A- ^/ ?8 O! k" p}' g6 e& \! R6 j% ]3 R
# |* Q' ~+ b! A

& J" s: T6 ^; T- B, Z 2 X. n* ^( Y7 i: m1 S0 ^
看看对不对?      

TOP

太寒了,放了一个月都快到了....      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

#include <stdio.h>
* _+ ?) z" b6 J/ [! A) o6 k5 N#include <stdlib.h>
0 u% C/ h, t; a7 T6 k
3 R, c7 N: d6 {, c& m4 s3 |0 t0 h9 Pint main(int argc,char **argv)
  M( }2 D, @* C8 a/ A& T{
" a; o5 \" K3 Q8 C9 p) ?1 h, P        int i, j, t;
1 f/ ^" Z% r' u7 O+ c        char c;- j, s/ Y. t5 o- r! X1 D
        float sum, array[10];( J0 M% D/ z+ E7 ~0 `
        sum = 0.0;
' ^4 U$ [1 y1 m0 [8 \/ B- F* e+ N4 u* n3 ?% P0 |& b6 e
        for (i = 0; i != 10; ++i)
( h0 {% o. Z5 S/ G1 m% H* o        {
. K8 ]' c% e, A$ p+ y. O# a                scanf ("%f%c",&array,&c);
4 T* \3 j* u  W7 t5 E3 P                if (c == '\n')/ ]0 R, ?5 p% N1 Y( j& m
                        break;
4 a& R- L* |) _0 z        }1 `3 ?# y; u7 Y! ?6 ?$ ]7 m8 _
2 e" }$ s* ~+ P9 z. ]
        for (j = 0;j <= i; ++j)  V& b0 f  v8 z
        {
/ w+ y7 w: c9 I$ X, l, m                for(t = j+1; t <= i; ++t)2 M0 _1 F; N" M$ B# F( C
                {
9 U1 Z# `' n+ i8 l5 v4 c                        if (array[j] == array[t])
# @  D9 ~2 c. A3 f- @5 D                        {3 A% W+ T# B7 l) U
                                fprintf (stderr,"Input error !\n");. n. K2 b4 S" O/ O" [, F
                                exit (EXIT_FAILURE);5 o& P: Y0 i9 R' s2 O% {9 R  \
                        }
) i( K, a% v$ P2 Y                }' r) w( u3 i9 ?: n1 f2 v: O
        }: y1 q5 C" E/ s$ ~& e2 u

' M1 z* m( l6 A0 v8 d- b        for (j = 0; j <= i; ++j)$ m( x, t2 N: F. }2 M
        {0 e9 l- ?; K5 S9 g4 c
                sum += array[j];
! T0 e% ]$ G* v8 |0 T        }0 i- h$ E( K" I
        printf ("Sum: %f\n",sum);( ]& M, B9 y6 P+ L; z# M  n
        return 0;
- c- A' w; L: l' Z9 M' ~}      
╋ ┃ _╉. _╉_╉ _╉_╉ `?╅? ̄ ?╅??╅?? ╅ 努力学习.研究技术.消失网络一段时间! Give up ! give it Up!

TOP

哈哈,有趣!      

TOP

发新话题