這個最優存盤問題的代碼,但是怎么改都說有錯誤,有沒有人幫忙改改,感激不盡啊
#include "stdio.h"
#define MAX 100
void sort(float *a,int n)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j+1]=temp;
}
}
}
}
void main()
{
int i,j,n,k;
float a[MAX],x[MAX];
float m=0,t=0;
printf("請輸入檔案數:\n");
scanf("%d",&n);
printf("請分別輸入這些檔案的檢索概率:\n");
for(i=0;i<n;i++)
scanf("%f",&a[i]);
sort(a,n);
k=(n-1)/2;
x[k]=a[n-1];
for(i=k+1;i<n;i++)
x[i]=a[n-2*(i-k)];
for(i=k-1;i>=0;i--)
x[i]=a[n-2*(k-i)-1];
for(i=0;i<n;i++)
{
m+=a[i];
for(j=i+1;j<n;j++)
t+=x[i]*x[j]*(j-i);
}
}
t=t/(m*m);
printf("經過合理的安排之后,最少檢索期望為:%f \n",t);
}
uj5u.com熱心網友回復:
多了一個},給你屏蔽掉了,編譯無錯了
#include "stdio.h"
#define MAX 100
void sort(float *a,int n)
{
int i,j;
float temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j+1]=temp;
}
}
}
}
void main()
{
int i,j,n,k;
float a[MAX],x[MAX];
float m=0,t=0;
printf("請輸入檔案數:\n");
scanf("%d",&n);
printf("請分別輸入這些檔案的檢索概率:\n");
for(i=0;i<n;i++)
scanf("%f",&a[i]);
sort(a,n);
k=(n-1)/2;
x[k]=a[n-1];
for(i=k+1;i<n;i++)
x[i]=a[n-2*(i-k)];
for(i=k-1;i>=0;i--)
x[i]=a[n-2*(k-i)-1];
for(i=0;i<n;i++)
{
m+=a[i];
for(j=i+1;j<n;j++)
t+=x[i]*x[j]*(j-i);
}
//}
t=t/(m*m);
printf("經過合理的安排之后,最少檢索期望為:%f \n",t);
}
uj5u.com熱心網友回復:
編譯沒問題,運行錯誤沒有檢查#include "stdio.h"
#define MAX 100
void sort(float *a, int n) {
int i, j;
float temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - 1; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j + 1] = temp;
}
}
}
}
void main() {
int i, j, n, k;
float a[MAX], x[MAX];
float m = 0, t = 0;
printf("請輸入檔案數:\n");
scanf("%d", &n);
printf("請分別輸入這些檔案的檢索概率:\n");
for (i = 0; i < n; i++)
scanf("%f", &a[i]);
sort(a, n);
k = (n - 1) / 2;
x[k] = a[n - 1];
for (i = k + 1; i < n; i++)
x[i] = a[n - 2 * (i - k)];
for (i = k - 1; i >= 0; i--)
x[i] = a[n - 2 * (k - i) - 1];
for (i = 0; i < n; i++) {
m += a[i];
for (j = i + 1; j < n; j++)
t += x[i] * x[j] * (j - i);
}
t = t / (m * m);
printf("經過合理的安排之后,最少檢索期望為:%f \n", t);
}
//}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108685.html
標籤:數據庫及相關技術
