2. 撰寫演算法以計算在給定各系數和變數x的值時的多項式fn(x)的值,要求時間盡可能少。 (難度等級2-3*)
(提示:可將各系數存盤在陣列A中;
另外,乘法運算的時間是加法運算時間的數倍)
fn(x)= anxn +an-1xn-1+an-1xn-2+….. a2x2+a1x+a0
uj5u.com熱心網友回復:
這道題怎么好像剛在哪見過double a[n]={a0,a1,...an};
double s=x;
for(int k=n-1; k>0; k--)
s = a[k-1] + a[k]*s
printf(“%lf”, s);
uj5u.com熱心網友回復:
改一下double a[n+1]={a0,a1,...an};
double s=a[n];
for(int k=n-1; k>0; k--)
s = a[k-1] + x*s;
printf(“%lf”, s);
uj5u.com熱心網友回復:
呵呵,我也是醉了,自己被繞進去了double a[n+1]={a0,a1,...an};
double s=x*a[n]+a[n-1];
for(int k=n-2; k>=0; k--)
s = a[k] + x*s;
printf(“%lf”, s);
uj5u.com熱心網友回復:
a0 + a1*x^1. + a2 * x^2 + .... + an*x^n最快的演算法是:
a0 + x*(a1 + x*(a2+ x*(......+x*(an)))))))
寫成函式就是:
float poly( float a[], int n, float x) {
float result = 0;
for ( int v=n; v>=0; v--)
result = a[v] + x*result;
return result;
}
int main () {
float a[100] = {1, 2, 3}; // 用來放系數ai的,表示 1 + 2*x + 3*x*x
int n=2; // 多項式最高項是平方專案
float x=3;
float ans = poly(a, n, x);
printf("%f", ans);
return 0;
};
這是哪個學校的題啊, 這都第四次回答了

uj5u.com熱心網友回復:
曾經我以為看見代碼就能看懂大概了 可是現在 唉..
能幫我講解下第一行和倒數第三行嗎
謝謝
uj5u.com熱心網友回復:
大佬你能幫我看一下這題嗎?
已知輸入序列中各元素的值至少有兩個元素。設計演算法求出該序列中元素的所有最大升、降子序列。例如,若元素依次為(1,20,30,12,3,5,7,4,6,100,11,8),則輸出結果為(1,20,30),(30,12,3),(3,5,7),(7,4),(4,6,100),(100,11,8)。
uj5u.com熱心網友回復:
這個貌似一個回圈就能解決吧記錄當前從那兒開始的, 升序還是降序狀態
然后看下一個點,是否還能繼續保持狀態(升或者降),如果能,就繼續到下一個點上繼續判斷
不能,就把從開始到當前的一起輸出, 然后從當前開始,更改狀態為降或者升再繼續到下一個點
uj5u.com熱心網友回復:
int main() {
int ary[]= {1, 20, 30, 12, 3, 5, 7, 4, 6, 100, 11, 8,};
int nLen = sizeof(ary) / sizeof(ary[0]);
int bAsce= ary[1] > ary[0] ? 1 : 0;
int nStart = 0; int x, y;
for ( x=1; x<nLen; x++) {
if ( bAsce ) {
if ( ary[x]>ary[x-1]) continue;
bAsce = 0;
} else {
if ( ary[x]<=ary[x-1]) continue;
bAsce = 1;
}
printf("{");
for ( y=nStart; y<x; y++) {
printf("%d ", ary[y]);
}
printf("}\n");
nStart = x-1;
}
printf("{");
for ( y=nStart; y<x; y++) {
printf("%d ", ary[y]);
}
printf("}\n");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115999.html
標籤:C++ 語言
上一篇:日常一問
下一篇:C語言萌新求助大佬!
