游戏开发论坛

 找回密码
 立即注册
搜索
楼主: sandy_zc_1

算法帖-大家都来试试

[复制链接]

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
发表于 2005-11-27 23:51:00 | 显示全部楼层

Re:算法帖-大家都来试试

其实我挺喜欢这种题的。
楼主一段时间发些啊。嘿嘿。挺开心的。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-11-28 04:19:00 | 显示全部楼层

Re:算法帖-大家都来试试

和你们这些年轻人真没得比。

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2005-11-28 15:31:00 | 显示全部楼层

Re: 算法帖-大家都来试试

怎样才能找到高效率的算法呢?
拿最简单的第1题来说,要我做,只会老老实实地写成

        Dim Sn As Double = 0
        Dim n As Integer = 1
        While Sn <= Val(TB1.Text)
            Sn += 1 / n
            n += 1
        End While
        TB2.Text = n - 1

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2005-11-28 18:07:00 | 显示全部楼层

Re:算法帖-大家都来试试

这个求和是死算法,提速想想语言层次的吧.

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-11-28 21:25:00 | 显示全部楼层

Re:算法帖-大家都来试试

While Sn <= Val(TB1.Text)
            Sn += 1 / n
            n += 1
        End While
这样的编程格式不可取:
while sn<=val(tb1.text)
每次要先进行获得tb1的数据(字符类型)-->然后转换为val-->再判断条件-->进行循环

31

主题

278

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
发表于 2005-11-29 01:25:00 | 显示全部楼层

Re:算法帖-大家都来试试

信息学奥林匹克竞赛中的试题!
以前高中考这个时,学过,不过都忘记了.呵呵!
大家可以去买清华的绿皮版信息学奥林匹克竞赛看看,总共三本,已经很多年了,不知道还有卖不?

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
发表于 2005-11-29 02:56:00 | 显示全部楼层

Re:算法帖-大家都来试试

我来顶! 呵呵!

14

主题

166

帖子

171

积分

注册会员

Rank: 2

积分
171
发表于 2005-11-30 12:14:00 | 显示全部楼层

Re:算法帖-大家都来试试

第7题的程序
                static void Main(string[] args)
                {
                        //
                        // TODO: Add code to start application here
                        //
/*
                        System.IO.StreamReader sr = new System.IO.StreamReader("in.txt");
                        if (sr == null)
                        {
                                System.Console.Write("no find in.txt.");
                                return;
                        }

                        //        这里是对输入的文件进行数据转换
                        string t = sr.ReadLine();
                        int num = int.Parse(t);
                        t = sr.ReadLine();*/
                        int num = 4;
                        string t = "1 3 2 2";
                        string [] ar = t.Split(' ');
                        ArrayList apple = new ArrayList();

                        for(int i = 0; i < ar.Length; i++)
                                apple.Add(int.Parse(ar));

                        //        这里才是算法

                        int tl = 0;
                        for(int i = 0; i < num - 1; i++)
                        {
                                ArrayList newapp = new ArrayList();
                                int min1 = (int)apple[0];
                                int min2 = (int)apple[1];
                                for(int j = 2; j < apple.Count; j++)
                                {
                                        if ((int)apple[j] < min2)
                                        {
                                                newapp.Add(min2);
                                                min2 = (int)apple[j];
                                                if (min2 < min1)
                                                {
                                                        int tmp = min2;
                                                        min2 = min1;
                                                        min1 = tmp;
                                                }
                                        }
                                        else
                                                newapp.Add(apple[j]);
                                }
                                tl += min1 + min2;
                                newapp.Add(min1 + min2);
                                apple = newapp;
                        }

                        System.Console.WriteLine(tl);
                }

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
 楼主| 发表于 2005-12-3 20:04:00 | 显示全部楼层

Re:算法帖-大家都来试试

今天把后面两道题发完。

大家做做啊,不要急着公布源代码,以后我会放测试数据的,你就可以看看你能得多少分了。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
 楼主| 发表于 2005-12-3 20:12:00 | 显示全部楼层

Re: Re:算法帖-大家都来试试

lights: Re:算法帖-大家都来试试

这些题其实都是算法的基础啦,这话绝对没错的,即使不会做也不要紧,最起码知道自己少学了一点东西,以后补上就可以了。

话说回来,皇后限制12个我觉得已经好体谅了,我做的15皇后也只算了一分钟,12皇后1秒都不到,输出文件大到好几十兆。不过很遗憾不是vb的成绩,vb版的效率低了10倍以上。


是的,真的都是基础,考察的都是一些常用的算法(最前面几道超级Easy的除外),而且都很单一,同一道题中只主考一种算法。想学编程这些东西是绕不过去的。

皇后的问题,数据规模限制当然是考虑到时间的问题啦,算到一分钟绝对算严重超时了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表