多处最优服务次序问题

xiaoxiao2025-11-09  5

用C语言的方法对txt文件中的数据进行读取和存取 这篇文章是接上一篇文章的,只不过这是多处最优服务次序问题,思路还是一样的,只不过在每次分组之后的第一个都不需要多余的等待时间,因为是同时开始的。 具体题目要求如下:

设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti([1,n]),共有s处可以提供此项服务。应该如何安排n个顾客的服务次序,才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。

#include <iostream> #include <algorithm> #include <cstdio> using namespace std; int main() { FILE* fp1 = fopen("input.txt","r"); FILE* fp2 = fopen("output.txt","w"); if(fp1 == NULL || fp2 == NULL) { cout << "Opened the file was failed!" << endl; return 0; } int N; fscanf(fp1,"%d",&N); double p[N]; for(int i = 0; i < N; i++) { fscanf(fp1,"%lf",&p[i]); } sort(p,p + N); double cnt[N]; for(int i = 0; i < N; ++i) { cnt[i] = p[i]; } for(int i = 0; i < N; i++) { cout << cnt[i] << " "; } for(int i = 0; i < N; i++) { for(int j = 0; j < i; j++) { cnt[i] += p[j]; } } cout << endl; for(int i = 0; i < N; i++) { cout << cnt[i] << " "; } cout << endl; double average = 0; double sum = 0; // for(int i = 0; i < N; i++) // cout << cnt[i] << " "; //cout << endl; for(int i = 0; i < N; i++) { sum += cnt[i]; cout << sum << " "; } average = sum / N; fprintf(fp2,"%0.2lf",average); return 0; }

用C++的方法对txt文件中数据的读取和存取

#include <iostream> #include <algorithm> #include <cstdio> #include <fstream> using namespace std; int main() { ifstream in("input.txt"); ofstream out("output.txt"); int N; in >> N; int s; in >> s; double p[N]; for(int i = 0; i < N; i++) { in >> p[i]; } sort(p,p + N); double cnt[N]; double sum[N]; int i=0; int j=0; while(i<N) { cnt[j]+=p[i];///每个人的等待时间 sum[j]+=cnt[j];///每个窗口的等待时间 i++; j++; if(j==s) j=0; } double average = 0; double sum0 = 0; for(int i = 0; i < s; i++) { sum0 += sum[i]; } average = sum0 / N; cout << average << " "; out << average; return 0; }
转载请注明原文地址: https://www.6miu.com/read-5039338.html

最新回复(0)