由t运行的程序无法获得正确的数字
Program runs byt cant get the correct numbers
标题
-
- 下面是霍纳算法的代码。当我运行它时,在我输入变量,switch为n=3,z=1,a=[-3,2,3,-1],c=[-1,2,3]。现在i得到正确的数字,直到t[1][2],之后算法失败可以你发现问题了吗?正确答案是:t[1][3]=-9
t[2][1]=6t[2][2]=9t[3][1]=4dp[0]=-9dp[1]=9dp[2]=8dp[3]=-6
标题2
在此处输入代码
- 下面是霍纳算法的代码。当我运行它时,在我输入变量,switch为n=3,z=1,a=[-3,2,3,-1],c=[-1,2,3]。现在i得到正确的数字,直到t[1][2],之后算法失败可以你发现问题了吗?正确答案是:t[1][3]=-9
#include <iostream> #include "math.h" #include <cstdlib> using namespace std; int fact(int i) { int k=1,j; for(j=1;j<=i;j++) { k=k*j; } return(k); } int main() { int n,i,j; cout<<"give n"<<endl; cin>>n; int a[n+1],z,c[n],t[n+1][n],dp[n]; cout<<"give z"<<endl; cin>>z; for (i=0;i<n+1;i++) { cout <<"give a"<<endl; cin >>a[i]; } for (j=1;j<n+1;j++) { cout <<"give c"<<endl; cin >>c[j]; } for (j=0;j<=n;j++) { t[0][j]=a[n-j]; } for (i=0;i<=n+1;i++) { t[i][0]=a[n]; } for (i=1;i<=n;i++) { for (j=1;j<=n-i+1;j++) { t[i][j]=t[i][j-1]*(z-c[n+2-i-j])+t[i-1][j]; cout<<t[i][j]<<endl; } } for (i=0;i<=n;i++) { if(i==0) { dp[i]=t[i+1][n-i]; } else { dp[i]=(fact(i))*(t[i+1][n-i]); cout<<dp[i]<<endl; } } return(0); }
在此处输入代码
在这个代码中,您将0分配给i,而不是将i与0进行比较
for (i=0;i<=n;i++)
{
if(i=0) // Wrong, change to if (i == 0) or if(!i) since i == 0 == !true
{
dp[i]=t[i+1][n-i];
}
else
{
dp[i]=(fact(i))*(t[i+1][n-i]);
cout<<dp[i]<<endl;
}
} return(0);
相关文章:
- 每次运行此 c++ 程序时如何获得不同的数字?
- 为什么当我在 c++ 中运行函数时,我的代码显示数字 53
- C++随机数生成器通常在 Visual Studio 中运行程序时在 2 次后停止生成数字
- 运行时检查失败 #2 - 变量"数字选择"周围的堆栈已损坏
- 当我运行我的程序时,即使"user"输入数字||C++ 绘画作业
- 如何在每次运行时将数字从循环中提取出来
- 如果 2 个数字之间的差值在 1 到 100 之间,则应运行 if 语句
- C++ 运行少量数字时超出内存限制
- 我希望循环运行直到数字为:123
- rand()每次运行程序时都返回相同的数字
- C++文件输出奇怪的数字,并且部分代码没有运行
- C++:运行程序时出现分段错误(将文件中的数字输入数组)
- 由t运行的程序无法获得正确的数字
- 尝试优化和理解打印数字除数的递归函数的运行时
- 运行会产生错误的数字,但调试效果很好
- 我希望程序打印数字 0 到 99,但是当我运行代码时,我看到 100 行 99
- 如何使用boost::multiprecision在运行时更改数字精度
- 在运行时确定行数和列数时,将数字表读取到数组中
- 我的c++程序读取一个矩阵并打印出非零的数字,这产生了一个运行时错误
- 友好数字:运行时间太长.是什么导致的呢?算法的复杂性