贪心算法作业之磁带最优存储问题与磁盘文件最优存储问题
2016-04-18 23:30
1226 查看
前言
还是直接上代码,虽然很想将有些东西写下来,感觉时间还是不够,还有就是这个有些东西写得多了没有什么意思,这里的代码参考书上的算法,还有对于C++有些理解,看了很厚的C++书后,才明白了一些。这里放上的代码,仅供参考,希望大家互相交流,共同进步。磁带最优存储问题
#include <iostream> #include <vector> #include<algorithm> using namespace std; using std::vector; double greedy(vector<int>x,vector<int>p) { int n=p.size(); vector <int>y(n,0); for(int i=0;i<n;i++) y[i]=x[i]*p[i]; sort(y.begin(),y.end()); for(int i=1;i<n;i++) y[i]+=y[i-1]; double m=0,t=0; for (int i=0;i<n;i++) { m+=p[i]; t+=y[i]; } return t/m; } int main() { int n; int a,b; int i,j; double t; vector<int>x; vector<int>p; cout << "请输入程序的个数" << endl; cin>>n; cout<<"请输入程序的长度:"<<endl; for(i=1;i<=n;i++) { cin>>a; x.push_back(a); } cout<<"请输入程序的读取概率:"<<endl; for(j=1;j<=n;j++) { cin>>b; p.push_back(b); } t=greedy(x,p); cout<<"最小平均读取时间为:"<<t<<endl; return 0; }
磁盘文件最优存储问题
#include <iostream> #include <vector> #include<algorithm> using namespace std; using std::vector; double greedy(vector<int>p) { int n=p.size(); vector <int>x(n,0); sort(p.begin(),p.end()); int k=(n-1)/2; x[k]=p[n-1]; for(int i=k+1;i<n;i++) { x[i]=p[n-2*(i-k)]; } for(int i=k-1;i>=0;i--) { x[i]=p[n-2*(k-i)-1]; } double m=0,t=0; for (int i=0;i<n;i++) { m+=p[i]; for (int j=i+1;j<n;j++) t+=x[i]*x[j]*(j-i); } return t/m/m; } int main() { int n; int a; int i; double t; vector<int>p; cout << "请输入文件的个数" << endl; cin>>n; cout<<"请输入文件的检索概率:"<<endl; for(i=1;i<=n;i++) { cin>>a; p.push_back(a); } t=greedy(p); cout<<"最小期望检索时间为:"<<t<<endl; return 0; }
结束
好好学习算法和C++,还有许多不是很懂。相关文章推荐
- 动态规划(最小字符串编辑距离实现)
- CSS实用的代码段
- 关于win7系统搭建FTP服务器
- Fragment碎片
- C++的异常对象按引用方式被传递
- 第八周-转折
- 【图像处理】DibImage图像处理常用算子
- Java之UUID介绍
- 同模余定理
- SQL Server Replication
- CodeForces 660C Hard Process
- Java进阶学习第七天——泛型与反射回顾
- 知识树的数据库建模 第八周作业
- Magento开发常用方法
- (java)从零开始之--装饰者设计模式
- javaEE--request.getRequestDispatcher--URL后带参数实现自定义跳转
- Raid创建 LVM创建 扩展
- xib自定义UIView报错误 "forUndefinedKey:]: this class is not key value coding-compliant for the key"
- 动态规划练习题(2)
- matlab中结构体和python中字典的异同