變量不初始化,害死人啊
哎……又是上述錯誤……
這道題……咳……正規做法本是迭代加深DFS……
可惜可惜……直接暴力即可解決……
而且我的迭代加深DFS也純屬瞎嘗試……上代碼吧……
雖然是錯的……沒出結果……
#include <stdio.h>
#include <string.h>
#include <math.h>
int eqArr[7];
int
check(int sum, int len)
{
int i;
char *ans, c;
//if (sum<500)
// printf("%d ", sum);
sprintf(ans, "%d\0", sum);
if (strlen(ans) != len)
return 0;
for (i=0; i<len; i++)
{
c = eqArr[i]+48;
if (c != eqArr[i])
return 0;
}
return 1;
}
int
calc(int len)
{
int i, sum = 0;
for (i=0; i<len; i++)
if (eqArr[i]!=0)
{
sum += (int)pow(eqArr[i],4);
}
if (check(sum, len))
{
printf("%d\n", sum);
}
return 0;
}
int
generateEquation(int k, int len)
{
int i;
if (k >= len)
{
calc(len);
return 0;
}
for (i=0; i<10; i++)
{
eqArr[k] = i;
generateEquation(k+1, len);
}
return 0;
}
int
main()
{
int l, *p;
for (l=2; l<4; l++)
{
generateEquation(0, l);
}
return 0;
}
好在後面的代碼是對的……直接暴力……我再也不相信數學了……(氣話)
#include <stdio.h>
#include <math.h>
int
main()
{
int i, x, now, ans, t;
ans = 0;
for (i=11; i<500000; i++)
{
x = i;
now =0;
while (x>0)
{
t = x%10;
now += pow(t,5);
x /= 10;
}
if (now == i)
{
printf("%d\n", i);
ans += i;
}
}
printf("%d\n", ans);
}
明天就考試了……哎……心裏沒底……也不想學了……先編程序玩吧……