帮忙看看怎么优化

Aprin 2005-04-21 12:31:38
当n=20时,还勉强可以接受,再大一点就不行了,远没有到MAXN的要求,我不懂优化,谁能帮帮忙,谢谢!

#include <stdio.h>
#define MAXN 150

int sum(int data[], int head, int tail);
int best(int data[], int head, int tail) {
int temp1, temp2;

if(head==tail)
return head;
temp1= *(data+head)+sum(data, head+1, tail);
temp2= *(data+tail)+sum(data, head, tail-1);
return (temp1>temp2)?head:tail;/*返回指针*/
}

int sum(int data[], int head, int tail) {
int temp;

if(head==tail)
return 0;/*有0个数据*/
if(tail== head+1)
return (*(data+head)<*(data+tail))?head:tail;/*取小的那一个*/
if(best(data, head, tail)==head)
head++;
else tail--;
temp= best(data, head, tail);
if(temp==head)
return *(data+temp)+sum(data, head+1, tail);
else
return *(data+temp)+sum(data, head, tail-1);
}

int main(void) {
int data[MAXN], head, tail, n, i, total1, total2, temp;

scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", data+i);

total1= total2= 0;
head=0;
tail= n-1;

for(i=0; i<n; i++) {
temp= best(data, head, tail);
if((i+1)%2!=0)
total1= total1+*(data+temp);
else
total2= total2+*(data+temp);
if(temp==head)
head= head+1;
else
tail= tail-1;
}

printf("%d %d\n", total1, total2);
getch();

return 0;
}
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aprin 2005-04-21
  • 打赏
  • 举报
回复
通过了,谢谢!
mathe 2005-04-21
  • 打赏
  • 举报
回复
int best_choice(int n, double a[]){
int i;double sum_odd,sum_even;
for(i=0,sum_odd=0,sum_even=0;i<n;i++){
if(i&1)sum_odd+=a[i];
else sum_even+=a[i];
}
if(n&1){//n is odd number
double choice_0=MIN(sum_odd,sum_even-a[0])+a[0];
double choice_n=MIN(sum_odd,sum_even-a[n-1])+a[n-1];
if(choice_0>=choice_n)return 0; else return n-1;
}else{
if(sum_odd<=sum_even)return 0;else return n-1;
}
}
Aprin 2005-04-21
  • 打赏
  • 举报
回复
-_||

我还是把题目说一下吧~~~
两个人做一个游戏,有一排(n个)数字,两人轮流取,每次只能从最左或是最右边取,最后谁的总和最大,谁就胜出。
现假设两个都非常聪明(也就是说两个人的取法都最优且一样),输入n个数,求最后两人的和
stonesky 2005-04-21
  • 打赏
  • 举报
回复
不知所云
Aprin 2005-04-21
  • 打赏
  • 举报
回复
to mathe()

测试数据不对啊,是不是哪里出问题了啊?

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧