tips:用递归的写法更加简单,易懂。
/*********************************************** ** problem ID : zoj_3640.cpp ** create time : Thu Jul 23 20:57:26 2015 ** auther name : xuelanghu ** auther blog : blog.csdn.net/xuelanghu407 **********************************************/ #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n, f; int c[110]; int t(int c) { return (int ) ((1 + sqrt(5)) / 2 * c * c); } double DP (int f) { double res = 0.0; for (int i=0; i<n; i++) { if (f > c[i]) { res += t(c[i]); } else { res += (1 + DP(f + c[i])); } } return res / n; } int main () { while (cin >> n >> f) { for (int i=0; i<n; i++) { cin >> c[i]; } printf ("%.3lf\n", DP(f)); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/xuelanghu407/article/details/47128195