讨论 / 有人有多的输入输出样本吗?
ezqrq 2015-10-01 02:14:29
点我顶贴 收藏 删除
我自己想的几个样本都过了,但提交后是零分,所以可以是样本不好。所以有AC的朋友能给我提供一下样本。附代码,有时间的朋友可以帮我看下错误。

#include <stdio.h>

#include <stdlib.h>

#define null 0

int re[101][101],re1[101][101],re2[101][101];

typedef struct node

{

int num;

struct node *next;

} Node;

void main()

{

int E,N; int i;

Node *biaoji;

Node *creat(int N1);

int e(int N1,Node *biaoji,int n);

scanf("%d",&N);

biaoji=creat(N);

for(i=2;i<=N;i++)

if (E<=e(N,biaoji,i)) E=e(N,biaoji,i);

printf("%d\n",E);

}

int e(int N1,Node *biaoji,int n)

{

int pre,now,next,i,temp;

Node *biaoji1[101],*biaoji2[101],*biaoji3[101];

Node* CloneList(Node* pHead);

Node *Del(Node *head, int n);

void PrintList(Node *head);

if (N1>2)

{

if (n==1)

{

biaoji3[N1]=CloneList(biaoji); biaoji2[N1]=CloneList(biaoji); biaoji1[N1]=Del(biaoji3[N1],1);

for(i=1;i<=N1;i++)

{

if(i==N1) {pre=biaoji2[N1]->num; break;}

if(i==1) now=biaoji2[N1]->num;

if(i==2) next=biaoji2[N1]->num;

biaoji2[N1]=biaoji2[N1]->next;

}

re2[N1][n]=pre*now*next;

}

else

if (n==N1)

{

biaoji3[N1]=CloneList(biaoji); biaoji2[N1]=CloneList(biaoji); biaoji1[N1]=Del(biaoji3[N1],N1);

for(i=1;i<=N1;i++)

{

if(i==N1-1) pre=biaoji2[N1]->num;

if(i==N1) {now=biaoji2[N1]->num; break;}

if(i==1) next=biaoji2[N1]->num;

biaoji2[N1]=biaoji2[N1]->next;

}

re2[N1][n]=pre*now*next;

}

else

{

biaoji3[N1]=CloneList(biaoji); biaoji2[N1]=CloneList(biaoji); biaoji1[N1]=Del(biaoji3[N1],n);

for(i=1;i<=N1;i++)

{

if(i==n-1) pre=biaoji2[N1]->num;

if(i==n) now=biaoji2[N1]->num;

if(i==n+1) {next=biaoji2[N1]->num;break;}

biaoji2[N1]=biaoji2[N1]->next;

}

re2[N1][n]=pre*now*next;

}

for(i=1;i<=N1-1;i++)

{ temp=e(N1-1,biaoji1[N1],i); if (re1[N1][n]<=temp) {re1[N1][n]=temp; }}

}

else

if (N1==2)

{

re2[N1][n]=(biaoji->num)*(biaoji->num)*((biaoji->next)->num);

if (re2[N1][n]<(biaoji->num)*((biaoji->next)->num)*((biaoji->next)->num))

re2[N1][n]=(biaoji->num)*((biaoji->next)->num)*((biaoji->next)->num);

re1[N1][n]=0;

}

else

{re2[N1][n]=0; re1[N1][n]=0; }

re[N1][n]=re2[N1][n]+re1[N1][n];

return re[N1][n];

}

Node *creat(int N1)

{

Node *p1=null,*p2=null,*head=null;

int lian=0;

p2=p1=(Node*)malloc(sizeof(Node));

scanf("%d",&p1->num);

while(1)

{

if(lian==0)

head=p1;

else

p2->next=p1;

p2=p1;

lian++;

if(lian>=N1)

break;

p1=(Node*)malloc(sizeof(Node));

scanf("%d",&p1->num);

}

p2->next=null;

return head;

}

Node *Del(Node *head, int n)

{

int lian=0;

Node *p1;

Node *p2;

p1 = head;

if (n==1)

head = p1->next;

else

{

while (1)

{

p2 = p1;

p1 = p1->next;

lian++;

if(lian>=n-1)

break;

}

{

if (p1 == head)

{

head = p1->next;

}

else

{

p2->next = p1->next;

}

}

free(p1);

p1 = NULL;

}

return head;

}

Node* CloneList(Node* pHead)

{

Node* pNode = pHead;

Node* pCloneHead, *pCloneNode;

if (pNode != NULL)

{

pCloneHead = (Node*)malloc(sizeof(Node));;

pCloneHead->num = pNode->num;

pCloneHead->next = NULL;

pCloneNode = pCloneHead;

pNode = pNode->next;

}

while (pNode != NULL)

{

Node* pTempNode =(Node*)malloc(sizeof(Node));

pTempNode->num = pNode->num;

pTempNode->next = NULL;

pCloneNode->next = pTempNode;

pCloneNode = pCloneNode->next;

pNode = pNode->next;

}

return pCloneHead;

}

查看更多回复
提交回复