大家帮我看看这个关于动态规划的问题,谢谢!!!!!!!!!!!!!!
#include <stdio.h>#define MAX 100001
int count1(int a, int aa[]);
int main(void)
{
int a, b, m, max=0, i, temp;
static int aa[MAX] = {0};
while (scanf("%d %d", &a, &b)!=EOF)
{
if (a>b)
{
temp=a;
a=b;
b=temp;
}
for (i=a; i<=b; i++)
{
m=count1(i, aa);
if (m>max)
{
max=m;
}
}
printf("%d\n", max);
max=0;
for (i=0; i<100001; i++)
{
if (aa[i]!=0)
{
printf(" aa[%d]=%d ", i, aa[i]);
}
}
}
return 0;
}
int count1(int a, int aa[]) {
if (aa[a]!=0)
{
return aa[a];
}
int i = 0;
int temp = a;
while (temp != 1) {
if (aa[temp] == 0) {
i++;
}
else {
i += aa[temp];
break;
}
if (temp % 2 == 0) {
temp = temp / 2;
}
else {
temp = 3 * temp + 1;
}
}
aa[a] = i;
return i;
}
为什么在输入1 2000的时候会有runtime error呢????????????
还有,作为动态规划,我的方法是不是不好??用递归是不是好一些?????
谢谢各位达人们啊....