推 loveflames:果然不能比三次更低了 06/12 14:26
※ 引述《loveflames (咕啾咕啾魔法陣)》之銘言:
: : void main(int n)
: : {
: : if n==33 execute func1;
: : if n==67 execute func2;
: : if n==324 execute func3;
: : if n==231 execute func4;
: : if n==687 execute func5;
: : }
: : 保證 n 一定是上面五個數字之一
: : 使用if, 請用你認為最快的方法實作main
: : 這兩題難度都是標記困難,所以我想第二題應該不會只是單純用if else
: : 而第一題無法下手......不知道有沒有高手指導一下
: void main(int n)
: {
: if n<68
: if n>33 {func2();return;}
: else {func1();return;}
: if n<325
: if n>231 {func3();return;}
: else {func4();return;}
: func5();
: }
: 這樣最多只要三次比較
: 應該不能再降低了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.123.116
一定用if表達的話,我以為是divide and conquer,總比較次數最低。
if ( n > 231 )
{
if ( n > 324 )
func5;
else
func3;
}
else
{
if ( n > 67 )
func4;
else
{
if ( n > 33 )
func2;
else
func1;
}
}
Bleed