?? na_3_02.c
字號:
#include <stdio.h>
#include <stdlib.h>
#define Max_size 10000 /* max number of dishes */
void Price( int n, double p[] );
int main()
{
int n, i;
double p[Max_size];
while (scanf("%d", &n)!=EOF) {
for (i=0; i<n; i++)
scanf("%lf", &p[i]);
Price(n, p);
for (i=0; i<n; i++)
printf("%.2f ", p[i]);
printf("\n");
}
return 0;
}
/* Your function will be put here */
void Price( int n, double p[] )
{
int i, j, k = 0;
double s = 0.0;
double m[n][4];
for(i=0; i<n; i++)
{
m[i][0] = 0.5;
m[i][1] = 2.0;
m[i][2] = 0.5;
m[i][3] = p[i];
}
for(i=0; i<n-1; i++)
{
s = m[i+1][0]/m[i][1];
m[i+1][1] -= s*m[i][2];
if(i == n-3 && i < 1)
m[i+1][2] -= s*m[i][0];
else m[i+1][0] = 0.0 - s*m[i][0];
m[i+1][3] -= m[i][3]*s;
if(i == n-2)
break;
s = m[n-1][2]/m[i][1];
m[n-1][2] = 0.0 - m[i][2]*s;
if(n == 3)
m[n-1][0] -= m[i][2]*s;
m[n-1][1] -= m[i][0]*s;
m[n-1][3] -= m[i][3]*s;
}
for(i=n-1; i>=0; i--)
{
s = 0.0;
if(i<n-2)
s = m[i][0]*p[n-1] + m[i][2]*p[i+1];
else if(i == n-2)
s = m[i][2] * p[i+1];
p[i] = (m[i][3] - s) / m[i][1];
}
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -