全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2030
推到 Plurk!
推到 Facebook!

「挑戰」有趣的小問題

尚未結案
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-03 17:31:30 IP:140.114.xxx.xxx 未訂閱
前幾天看到了一個問題 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 將1~24這24個正整數分成三組,每組8個數字,且8個數字合為100 請問有幾種分法 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 覺得滿有趣的,所以我就寫了一下 我寫了50行,程式在我的AMD 1.5G上跑了30秒 我想不會有人比我快了~~~~~~ 所以我來挑戰一下,看有沒有人寫得比我快
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-04 00:31:15 IP:211.76.xxx.xxx 未訂閱
goodfriend 您好: 不曉得有沒有限定方法? 發表人 - richtop 於 2004/11/04 00:33:14
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-04 01:50:04 IP:140.114.xxx.xxx 未訂閱
不要直接印出答案就行了    這是我寫的    
 
**********************************************    program Project1;    uses
  SysUtils;
const
  max_int:integer=24;
  max_depth:integer=8;
  mysum:integer=100;
var
  count:integer=0;
  count2:integer=0;
  num_array:array[0..20000] of integer;
procedure xxxyyy(depth,cur_int,sum,num:integer);
var temp:integer;
begin
if (cur_int>max_int) then
  exit;
if (depth>max_depth) then
  exit;
if (depth=max_depth) then
  begin
  if (sum cur_int = mysum) then
    begin
    temp:=num or ( 1 shl (cur_int -1));
    num_array[count]:=temp;
    count:=count 1;
    exit;
    end;
  end;
xxxyyy(depth 1,cur_int 1,sum cur_int,num or ( 1 shl (cur_int -1)));
xxxyyy(depth  ,cur_int 1,sum        ,num);
end;    var i,j,a,temp,bitnum:integer;    begin
xxxyyy(1,1,0,0);
for i:=0 to count do
for j:=i 1 to count do
  begin
  temp:=num_array[i] or num_array[j];
  bitnum:=0;
  for a:=23 downto 0 do
    if (temp and (1 shl a))>1 then
      bitnum:=bitnum 1;
  if (bitnum=16) then
     count2:=count2 1;
  end;
writeln(count2);
sleep(2000);
end.
**********************************************
發表人 - goodfriend 於 2004/11/04 02:01:10
shpeng
初階會員


發表:6
回覆:67
積分:49
註冊:2002-12-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-04 21:14:30 IP:220.130.xxx.xxx 未訂閱
引言:我想不會有人比我快了~~~~~~ 所以我來挑戰一下,看有沒有人寫得比我快
有何獎賞? ==取之於斯,用之於斯==
------
==取之於斯,用之於斯==
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-04 23:44:51 IP:140.114.xxx.xxx 未訂閱
給你得一分 但是不可以直接印出答案 而且程式最好有擴充性 和能印出全部的解 其實我想求的是 「有沒有比我更好的演算法和寫code技巧」 即然我求的是演算法,那就是希望可以解決類似的問題 所以只要你的演算法比我好,或是寫code技巧讓我耳目一新 都是得分者
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-08 03:42:03 IP:140.114.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?topic_id=59245 快快快 我等著你們的挑戰呢 我後來又想到一個更讚的作法呢~~~~~~
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-08 18:55:09 IP:61.218.xxx.xxx 未訂閱
這是離散數學的題目以前也學過 ㄧ時找不到演算法  有興趣的話你可以去找找 如果我有找到 我也會
------
~ 勿在浮沙上面築高塔 ~
無故障
一般會員


發表:17
回覆:69
積分:17
註冊:2004-03-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-11 08:30:07 IP:211.76.xxx.xxx 未訂閱
可以先知會一下答案有幾組嗎? 可以用查表法嗎? 那可能快很多 ^_^ 練習! 練習! 再練習!
------
嘿嘿嘿
gglee
一般會員


發表:0
回覆:2
積分:0
註冊:2003-11-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-14 01:35:45 IP:61.229.xxx.xxx 未訂閱
哇~真多組解, 有1025113組呢!
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-18 20:51:06 IP:61.222.xxx.xxx 未訂閱
引言: 哇~真多組解, 有1025113組呢!
請問一下,你的程式跑多快啊?
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-12-19 16:16:15 IP:218.168.xxx.xxx 未訂閱
goodfriend 你好,   很有趣的題目, 值得一試 ...   你的程式看起來是使用 recursive 解題,   所以應該比 iterative 的方式慢的多,   因此, 應該有跑的更快的寫法    <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
goodfriend
一般會員


發表:2
回覆:6
積分:1
註冊:2002-06-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-19 19:32:31 IP:140.114.xxx.xxx 未訂閱
引言: goodfriend 你好, 很有趣的題目, 值得一試 ... 你的程式看起來是使用 recursive 解題, 所以應該比 iterative 的方式慢的多, 因此, 應該有跑的更快的寫法 <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
^_^~~~並不是所有的recursive都比iterative慢 尤其是一些用recursive很好解但是用iterative很難解的問題 這個問題是一個大陸人提出來的問題,他們老師出了這個題目 剛好我看到了,我覺得蠻有趣的 於是就幫他寫了出來 不過我一直覺得我的做法並不完美 應該還有更快的方法 所以來這挑戰一下~~~~~
系統時間:2024-05-02 19:07:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!