📄 1003.cpp
字号:
#include <stdio.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;
}
//助教,这是书上的一个模块
#include <iostream>
#include <cmath>
using namespace std;
void Price( int n, double p[] )
{
/*if(n==3)
{
double w=(p[0]+p[1]+p[2])/3;
p[0]=(p[0]*2-w)/3;
p[1]=(p[1]*2-w)/3;
p[2]=(p[2]*2-w)/3;
}
else {
*/
double q[10001];
double u[10001];
double t[10001];
double h[10001];
double g[10001];
double a[10001];
double b[10001];
double c[10001];
double d[10001];
double x[10001];
int i;
for(i=0;i<n;i++){
a[i]=0.5;
b[i]=2;
c[i]=0.5;
d[i]=p[i];
}
double pp = b[0];
q[0]= - c[0]/pp ;
t[0]= - a[0]/pp;
u[0]= d[0]/pp;
for(i= 1;i<n-1;i++ )
{
pp = a[i]* q[i- 1]+ b [i];
u[i]= (d[i]- a[i]* u [i- 1])/pp;
q[i]= - c[i]/pp ;
t[i]= - a[i]* t[i- 1]/pp;
}
h [n - 1]= (d [n - 1]- a[n - 1]* u [n - 2])/(a[n - 1]* (q[n - 2]+ t[n - 2])+ b[n - 1]);
g[n - 1]= - 1* c[n - 1]/(a[n - 1]* (q[n - 2]+ t[n - 2])+ b[n - 1]);
h[n - 2]= u[n - 2]+ (q[n - 2]+t[n - 2])* h [n - 1];
g[n - 2]= (q[n - 2]+ t[n - 2])* g[n - 1];
for(i= n - 3;i> 0;i-- )
{
h [i]= u[i]+ q[i]* h [i+ 1]+ t[i]* h [n - 1];
g[i]= q[i]* g[i+ 1]+ t[i]* g[n - 1];
}
x[0]= (d [0]- c[0]* h [1] - a[0] * h [n -1])/(b [0]+ c[0]* g[1]+ a[0]* g[n - 1]);
for( i= 1;i< n ;i++ )
x[i]= h[i]+ g[i]* x[0];
for( i=0;i<n;i++)
p[i]=x[i];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -