数学建模四 公平席位分配的比例+惯例法和Q值法
2017-04-20 14:20
274 查看
#include<iostream> #include<cmath> #define N 50 using namespace std; int ma 4000 in() //比例+惯例法 { int n , p , nsum, sum1, sum, m, i, j, k, r; float c ; sum = 0;sum1 = 0;j = 0; cout << "please enter m n" << endl; cin >> m >> nsum; cout << "please enter pi " << endl; for (i = 0;i < m;i++)cin >> p[i]; for (i = 0;i < m;i++)sum = sum + p[i]; for (i = 0;i < m;i++) n[i] = floor(((float)p[i] / sum)*nsum); for (i = 0;i < m;i++)sum1 = sum1 + n[i]; k = nsum - sum1; for (i = 0;i < m;i++)c[i] = ((float)p[i] / sum)*nsum - n[i]; for (r = 0;r < k;r++) for (i = 0;i < m;i++) if (c[i] > c[j])j = i; n[j]++; c[j] = 0; for (i = 0;i < m;i++)cout << n[i] << endl; return 0; }
#include<iostream> #include<cmath> #define N 50 using namespace std; int main() //Q值法 { int n ,p ,nsum,sum1,sum,m,i,j; float q ; sum=0;sum1=0;j=0; cout<<"please enter m n"<<endl; cin>>m>>nsum; cout<<"please enter pi "<<endl; for(i=0;i<m;i++)cin>>p[i]; for(i=0;i<m;i++)sum=sum+p[i]; for(i=0;i<m;i++)n[i]=floor(((float)p[i]/sum)*nsum); for(i=0;i<m;i++)sum1=sum1+n[i]; for(;sum1<nsum;sum1++) { for(i=0;i<m;i++)q[i]=(float)(p[i]*p[i])/(n[i]*(n[i]+1)); for(i=0;i<m;i++)if(q[i]>q[j])j=i; n[j]++; } for(i=0;i<m;i++)cout<<n[i]<<endl; return 0; }
相关文章推荐
- 公平的席位分配数学模型 程序实现
- 【数学建模】公平席位的分配问题
- Java解决数学建模之席位分配问题
- 公平的席位分配
- 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
- 公平的席位分配
- 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
- zzuli 2131: Can Win(最大流 公平分配)@
- 利润侵蚀工资,税收侵蚀工资,税收机制对分配公平的矫正作用非但没能发挥,反而更加剧了分配的不公平性
- 【机器学习中的数学】比例混合分布
- [蓝书/Ch5] The K-League UVALive - 2531 最大流/公平分配问题
- 固定资产过帐成批增加报错:您必须定义此折旧惯例的比例分配期
- 【机器学习中的数学】比例混合分布
- Max-Min 带宽公平分配算法
- POJ1336 The K-League[最大流 公平分配问题]
- Android之使用weight属性实现控件的按比例分配空间
- Android LinearLayout中元素按比例分配宽度
- UVALive 3231 Fair Share 最大流(公平分配)
- D3D资源分配惯例
- 网络流和棒球赛淘汰问题 公平分配模板 足球联赛 UVa1306 The K-League