| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 942 人关注过本帖
标题:百度之星初赛B
取消只看楼主 加入收藏
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
收藏
 问题点数:0 回复次数:1 
百度之星初赛B
题目:http://www.
第一题:BFS+hash算法
第三题写出来了,但是估计肯定超时
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int number[1000000];
int state[1000000][2];
void print(int sum)
{
    int i,min;
    if(state[sum][0]>state[sum][1])
    min=state[sum][1];
    else
    min=state[sum][0];
    //printf("%d\n",min);
    for(i=2;i<=min;i++)
    {
    if(state[sum][0]%i==0&&state[sum][1]%i==0)
    {
    state[sum][0]=state[sum][0]/i;
    state[sum][1]=state[sum][1]/i;
    }
    }
    printf("%d/%d\n",state[sum][0],state[sum][1]);
}
int main()
{
    int i,j,k,count,max=0,n,m;
    int sum;
    scanf("%d %d",&n,&m);
    memset(number,0,sizeof(number));
    for(i=0;i<n;i++)
    scanf("%d",&number[i]);
    for(i=0;i<m;i++)
    max=max+number[i];
    max=max/m;
    for(i=0;i<n;i++)
    for(j=i;j<n;j++)
    {
    sum=0;count=0;
    for(k=i;k<=j;k++)
    {
    sum=sum+number[k];
    count++;
    }
    if(sum/count>max&&count>=m)
    {
    max=sum/count;
    state[max][0]=sum;
    state[max][1]=count;
    }
    }
    if(state[max][1]==1)
    printf("%d\n",state[max][0]);
    else
    print(max);
    //system("pause");
    return 0;
}


[ 本帖最后由 sunyh1999 于 2011-6-13 19:11 编辑 ]
搜索更多相关主题的帖子: 百度 
2011-06-12 20:52
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
发现有几个错误的地方,现在发上代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int number[1000000];
void print(int a,int b)
{
    int i,min;
    if(a>b)
    min=b;
    else
    min=a;
    //printf("%d\n",min);
    for(i=2;i<=min;i++)
    {
    if(a%i==0&&b%i==0)
    {
    a=a/i;
    b=b/i;
    }
    }
    if(b==1)
    printf("%d\n",a);
    else
    printf("%d/%d\n",a,b);
}
int main()
{
    int i,j,k,count,max=0,n,m;
    int a,b,sum;
    scanf("%d %d",&n,&m);
    memset(number,0,sizeof(number));
    for(i=0;i<n;i++)
    scanf("%d",&number[i]);
    for(i=0;i<m;i++)
    max=max+number[i];
    max=max/m;
    for(i=0;i<n;i++)
    for(j=i;j<n;j++)
    {
    sum=0;count=0;
    for(k=i;k<=j;k++)
    {
    sum=sum+number[k];
    count++;
    }
    if((float)sum/count>max&&count>=m)
    {
    max=sum/count;
    a=sum;
    b=count;
    }
    }
    if(b==1)
    printf("%d\n",a);
    else
    print(a,b);
    system("pause");
    return 0;
}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2011-06-13 19:11
快速回复:百度之星初赛B
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034882 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved