int FactorialSum( List L )
{
int max=0,sum=0;
List p,head;
head=L;
p=head;
while(p!=NULL)
{
if(max<p->Data)
max=p->Data;
p=p->Next;
}
int fa[max+1];
fa[1]=1;
for(int i=1;i<max+1;i++)
fa[i]=fa[i-1]*i;
p=head;
while(p!=NULL)
{
sum+=fa[p->Data];
p=p->Next;
}
return sum;
{
int max=0,sum=0;
List p,head;
head=L;
p=head;
while(p!=NULL)
{
if(max<p->Data)
max=p->Data;
p=p->Next;
}
int fa[max+1];
fa[1]=1;
for(int i=1;i<max+1;i++)
fa[i]=fa[i-1]*i;
p=head;
while(p!=NULL)
{
sum+=fa[p->Data];
p=p->Next;
}
return sum;
}
数据结构体好久没用了,这个题目很新奇。
注意阶乘首项的分配。
阶乘采用数组一次记录最大的完全部阶乘会比较省时间和内存。
链表阶乘求和算法
本文介绍了一种新颖的数据处理算法,通过遍历链表并计算每个元素对应的阶乘来实现链表元素的阶乘求和。该算法首先找到链表中的最大值以确定阶乘数组的大小,然后计算阶乘数组,最后遍历链表并累加各元素的阶乘值。
1073

被折叠的 条评论
为什么被折叠?



