| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17883 人关注过本帖, 8 人收藏
标题:第四届蓝桥杯本科B组C语言题
只看楼主 加入收藏
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
收藏
得分:0 
回复 72楼 beyondyf
杨哥,能不能有时间讲讲第9题。
不知道如何来减少时间

一同学习, 一同进步
2013-05-30 22:28
少林小和尚
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2013-3-31
收藏
得分:0 
回复 9楼 beyondyf
大神
2013-05-31 11:18
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 81楼 dengluoy
关于第9题的算法我在9楼已经阐述过了,不知道哪里没说明白?或者是代码实现上有困难?

重剑无锋,大巧不工
2013-06-01 09:38
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
收藏
得分:0 
回复 83楼 beyondyf
代码的实现。- -  

一同学习, 一同进步
2013-06-01 18:36
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 84楼 dengluoy
结合我9楼的分析看代码吧。这段代码比题目要求输出的多,同时输出了所有带分数的表达式。如果只想得到题目要求的结果请删去search中的printf。
程序代码:
#include<stdio.h>

int s[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

int n, count;

void search(int deep)
{
    int i, j, t, a, b, c, d, k;
    if(deep >= sizeof(s) / sizeof(int))
    {
        for(t = i = 0; i < sizeof(s) / sizeof(int); t = t * 10 + s[i++]);
        for(i = 100; i <= t; i *= 10)
        {
            if((a = t / i) >= n) continue;
            for(k = t % i, j = 10; (b = k / j) >= (c = k % j); j *= 10)
            {
                if((d = a + b / c) < n) break;
                if(b % c) continue;
                if(d == n) printf("%d + %d / %d\n", a, b, c), count++;
            }
        }
        return;
    }
    for(i = deep; i < sizeof(s) / sizeof(int); i++)
    {
        t = s[deep]; s[deep] = s[i]; s[i] = t;
        search(deep + 1);
        t = s[deep]; s[deep] = s[i]; s[i] = t;
    }
}

int main()
{
    scanf("%d", &n);
    search(0);
    printf("%d", count);
    return 0;
}

重剑无锋,大巧不工
2013-06-01 19:54
dengluoy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:127
专家分:165
注 册:2013-2-5
收藏
得分:0 
回复 85楼 beyondyf
谢谢谢谢,

一同学习, 一同进步
2013-06-02 19:29
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
蓝桥杯的题为何我一道都不会???

潇洒不可少!
2013-06-08 23:27
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
请哥哥将第一题的代码贴出,感激不尽!

潇洒不可少!
2013-06-08 23:31
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:0 
回复 88楼 浮云之冰雪
#include "stdio.h"
#define N 8113
main()
{  int  y=0,x=1;
int year,mon,day;
   
    for(year=1777;year<1778;year++)
    for(mon=5;mon<=12;mon++)
        {if(mon==5||mon==7||mon==8||mon==10||mon==12)
            {for(day=1;day<=31;day++)
            x++;}
            
            
            else if(mon==6||mon==9||mon==11)
            {for(day=1;day<=30;day++)
            x++;}
        }
        
   
   
   
   
   
   
    for(year=1778;year<2012;year++)
    {for(mon=1;mon<=12;mon++)
    {if(year%4==0&&year%100!=0||year%400==0)
        {if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
            for(day=1;day<=31;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
                    
        
            else if(mon==4||mon==6||mon==9||mon==11)
            for(day=1;day<=30;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
            else
            for(day=1;day<=29;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
        }
            
    else
    {if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
            for(day=1;day<=31;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
            else if(mon==4||mon==6||mon==9||mon==11)
            for(day=1;day<=30;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
            else
            for(day=1;day<=28;day++)
            {x++;
                if(x==N)
                {
   if(mon<10&&day<10)
   printf("%d-0%d-0%d",year,mon,day);
   else if(mon<10&&day>=10)
    printf("%d-0%d-%d",year,mon,day);
    else if(mon>=10&&day<10)
     printf("%d-%d-0%d",year,mon,day);
     else
     printf("%d-%d-%d",year,mon,day);
}}
    }
    }   }
   
}

加油加油!
2013-06-14 09:35
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:0 
其实这道题可以化简,不用那么多输出,可以把输出放在最后面,

加油加油!
2013-06-14 09:37
快速回复:第四届蓝桥杯本科B组C语言题
数据加载中...
 
   



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

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