时间:
2022年10月31日
背景:
算法课作业,简单想了一下普通的算法,并写了一个优化算法。普通算法时间复杂度为O(n^2),优化算法时间复杂度为O(n)。
该代码十分简单,对于初学者来说刚刚好。
如果大佬们看到的话,可以给我写代码的方式提一下意见QWQ
代码:
#include <stdio.h>
#include <math.h>
#include <malloc.h>
int main() {
int n;//几项
printf("一元多项式求值程序!\n");
printf("请输入几项:");
scanf("%d", &n);
int x;//解
printf("请输入X解:");
scanf("%d", &x);
int* a = (int*)malloc(sizeof(int) * (n + 1));//系数
for (int i = 0; i < n+1; i++) {
printf("请输入a%d:",i); // 执行 n+1 次
scanf("%d", &a[i]); // 执行 n+1 次
}
int y = 0;//值
int m = 0;//中间值
//普通算法 时间复杂度O(n^2)
//for (int j = 0; j < n+1; j++) {
// m = a[j]; // 执行 n+1 次
// for (int k = 0; k < j; k++) {
// m = m * x; // 执行 n(n+2)/2 次
// }
// y += m; // 执行 n+1 次
//}
//改进算法 时间复杂度O(n)
for (int j = 0; j < n + 1; j++) {
m = a[n-j]; // 执行 n+1 次
y += m; // 执行 n+1 次
if (n - j != 0) {
y = y * x; // 执行 n 次
}
}
printf("值为:%d", y);
}