|
![]() | 作者: rkh [rkh]
![]() |
登录 |
求一个经典算法的应用实列 比如24点 需源代码 环境VC++ |
地主 发表时间: 04-04-07 15:47 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
看看本版内的这个帖 我发的 "这个数组怎样排?" |
B1层 发表时间: 04-04-07 17:50 |
![]() | 回复: cyshaoping [cyshaoping] ![]() |
登录 |
我在我们学校bbs上看到这个,不知道对你有用没有 作者:johnbill /* 思路:四张牌算24,有11种算法,它们是: C#C#C#C (C#C)#C#C C#(C#C)#C C#C#(C#C) (C#C)#(C#C) (C#C#C)#C C#(C#C#C) ((C#C)#C)#C (C#(C#C))#C C#((C#C)#C) C#(C#(C#C)) 其中,C表示牌,#表示运算符(加、减、乘、除) 这11种算法有一个共同点,那就是只用四张牌、 三个运算符,而且牌和运算符是相间出现的,于是, 我就可以把这11种算法放在一个数组中,循环调用…… 我先把四张牌做全排列,再将所有可能的运算符情况 和四张牌的每一种排列填到这11种算法中进行计算,只要 找到解,就停止循环…… 分数的问题不用单独考虑,用double就可以解决问题 从1 1 1 1到10 10 10 10,其中共有566种情况是可以解出的,它们是: [001] 1 1 1 8 : (1+1+1)*8 [002] 1 1 2 6 : (1+1+2)*6 [003] 1 1 2 7 : (1+2)*(1+7) [004] 1 1 2 8 : 1*(1+2)*8 [005] 1 1 2 9 : (1+2)*(9-1) [006] 1 1 2 10 : (1+1)*(2+10) [007] 1 1 3 4 : (1+1)*3*4 [008] 1 1 3 5 : (1+3)*(1+5) [009] 1 1 3 6 : 1*(1+3)*6 [010] 1 1 3 7 : 1*(1+7)*3 [011] 1 1 3 8 : 1-1+3*8 [012] 1 1 3 9 : (1+1)*(3+9) [013] 1 1 3 10 : 3*(10-(1+1)) [014] 1 1 4 4 : (1+1+4)*4 [015] 1 1 4 5 : 1*(1+5)*4 [016] 1 1 4 6 : 1-1+4*6 [017] 1 1 4 7 : 1*4*(7-1) [018] 1 1 4 8 : (1+1)*(4+8) [019] 1 1 4 9 : (1-4)*(1-9) [020] 1 1 4 10 : (1+1)*10+4 [021] 1 1 5 5 : (1+5)*(5-1) [022] 1 1 5 6 : 1*(5-1)*6 [023] 1 1 5 7 : (1+1)*(5+7) [024] 1 1 5 8 : (5-(1+1))*8 [025] 1 1 6 6 : (1+1)*(6+6) [026] 1 1 6 8 : 6/(1+1)*8 [027] 1 1 6 9 : (1+1)*9+6 [028] 1 1 7 10 : (1+1)*7+10 [029] 1 1 8 8 : (1+1)*8+8 [030] 1 2 2 4 : (1+2)*2*4 [031] 1 2 2 5 : (1+5)*(2+2) [032] 1 2 2 6 : (1+2)*(2+6) [033] 1 2 2 7 : (2+2)*(7-1) [034] 1 2 2 8 : (2-1+2)*8 [035] 1 2 2 9 : (1+2+9)*2 [036] 1 2 2 10 : 1*2*(2+10) [037] 1 2 3 3 : (1+3)*2*3 [038] 1 2 3 4 : (1+2+3)*4 [039] 1 2 3 5 : (1+2)*(3+5) [040] 1 2 3 6 : 1*(2+6)*3 [041] 1 2 3 7 : 1+2+3*7 [042] 1 2 3 8 : (1+3)*(8-2) [043] 1 2 3 9 : 1*2*(3+9) [044] 1 2 3 10 : 1+2*10+3 [045] 1 2 4 4 : (1+2)*(4+4) [046] 1 2 4 5 : (2-1+5)*4 [047] 1 2 4 6 : (2-1)*4*6 [048] 1 2 4 7 : (1-2+7)*4 [049] 1 2 4 8 : 1*2*(4+8) [050] 1 2 4 9 : (1+9)*2+4 [051] 1 2 4 10 : 1*2*10+4 [052] 1 2 5 5 : 1-2+5*5 [053] 1 2 5 6 : (1-2+5)*6 [054] 1 2 5 7 : 1*2*(5+7) [055] 1 2 5 8 : (1-5)*(2-8) [056] 1 2 5 9 : (1+2)*5+9 [057] 1 2 5 10 : 2*10-1+5 [058] 1 2 6 6 : (1+2)*6+6 [059] 1 2 6 7 : (1-7)*(2-6) [060] 1 2 6 8 : 1/2*6*8 [061] 1 2 6 9 : 1*2*9+6 [062] 1 2 6 10 : (1+2)*10-6 [063] 1 2 7 7 : (7*7-1)/2 [064] 1 2 7 8 : 1+2*8+7 [065] 1 2 7 9 : 1+2*7+9 [066] 1 2 7 10 : 1*2*7+10 [067] 1 2 8 8 : 1*2*8+8 [068] 1 2 8 9 : 2*8-1+9 [069] 1 2 8 10 : 2*(8-1)+10 [070] 1 3 3 3 : (1+3)*(3+3) [071] 1 3 3 4 : 1*(3+3)*4 [072] 1 3 3 5 : 1*3*(3+5) [073] 1 3 3 6 : (1+6)*3+3 [074] 1 3 3 7 : 1*3+3*7 [075] 1 3 3 8 : (1+8)*3-3 [076] 1 3 3 9 : (1+3)*(9-3) [077] 1 3 3 10 : (1-3+10)*3 [078] 1 3 4 4 : 1*3*(4+4) [079] 1 3 4 5 : 1+3+4*5 [080] 1 3 4 6 : 6/(1-3/4) [081] 1 3 4 7 : (1+3)*7-4 [082] 1 3 4 8 : (1+3)*4+8 [083] 1 3 4 9 : 1+3*9-4 [084] 1 3 4 10 : (1+3)*(10-4) [085] 1 3 5 6 : 1+3*6+5 [086] 1 3 5 7 : (1+5)*(7-3) [087] 1 3 5 8 : 1+3*5+8 [088] 1 3 5 9 : 1*3*5+9 [089] 1 3 5 10 : 3*5-1+10 [090] 1 3 6 6 : 1*3*6+6 [091] 1 3 6 7 : 1*6*(7-3) [092] 1 3 6 8 : 1*(6-3)*8 [093] 1 3 6 9 : (1+9)*3-6 [094] 1 3 6 10 : 1*3*10-6 [095] 1 3 7 7 : (1-7)*(3-7) [096] 1 3 7 8 : 3/(1-7/8) [097] 1 3 7 9 : (1+7)/3*9 [098] 1 3 7 10 : 1+3*10-7 [099] 1 3 8 8 : (1+3)*8-8 [100] 1 3 8 9 : 1/3*8*9 [101] 1 3 8 10 : 8/3*(10-1) [102] 1 3 9 9 : (9-1)/3*9 [103] 1 3 9 10 : (1+10)*3-9 [104] 1 3 10 10 : 1+3+10+10 [105] 1 4 4 4 : (1+4)*4+4 [106] 1 4 4 5 : 1*4+4*5 [107] 1 4 4 6 : (1+6)*4-4 [108] 1 4 4 7 : 1+4*4+7 [109] 1 4 4 8 : 1*4*4+8 [110] 1 4 4 9 : (1-4+9)*4 [111] 1 4 4 10 : 1*4*(10-4) [112] 1 4 5 5 : 4-(1-5)*5 [113] 1 4 5 6 : 4/(1-5/6) [114] 1 4 5 7 : 1+4*7-5 [115] 1 4 5 8 : (1+5)*(8-4) [116] 1 4 5 9 : (4-1)*5+9 [117] 1 4 5 10 : (1-5)*(4-10) [118] 1 4 6 6 : (1+4)*6-6 [119] 1 4 6 7 : (1-4+7)*6 [120] 1 4 6 8 : (1-4+6)*8 [121] 1 4 6 9 : 6*(9-(1+4)) [122] 1 4 6 10 : (4-1)*10-6 [123] 1 4 7 7 : (1+7)*(7-4) [124] 1 4 7 8 : (1+7)*4-8 [125] 1 4 7 9 : (1-9)*(4-7) [126] 1 4 8 8 : 1*4*8-8 [127] 1 4 8 9 : 1+4*8-9 [128] 1 4 9 10 : 1+4+9+10 [129] 1 4 10 10 : 1*4+10+10 [130] 1 5 5 5 : (5-1/5)*5 [131] 1 5 5 6 : (1+5)*5-6 [132] 1 5 5 9 : (1+5)*(9-5) [133] 1 5 5 10 : 5*(10-5)-1 [134] 1 5 6 6 : 1*5*6-6 [135] 1 5 6 7 : 1+5*6-7 [136] 1 5 6 8 : (1-5+8)*6 [137] 1 5 6 9 : 1*6*(9-5) [138] 1 5 6 10 : (1+5)*(10-6) [139] 1 5 7 8 : (1-5+7)*8 [140] 1 5 7 9 : (1-7)*(5-9) [141] 1 5 7 10 : (1+7/5)*10 [142] 1 5 8 8 : 1*(8-5)*8 [143] 1 5 8 9 : (1-9)*(5-8) [144] 1 5 8 10 : 1+5+8+10 [145] 1 5 9 9 : 1+5+9+9 [146] 1 5 9 10 : 1*5+9+10 [147] 1 5 10 10 : 5-1+10+10 [148] 1 6 6 6 : (6-1)*6-6 [149] 1 6 6 8 : 6/(1-6/8) [150] 1 6 6 9 : (1-6+9)*6 [151] 1 6 6 10 : 1*6*(10-6) [152] 1 6 7 9 : (1+7)*(9-6) [153] 1 6 7 10 : 1+6+7+10 [154] 1 6 8 8 : (1-6+8)*8 [155] 1 6 8 9 : 1+6+8+9 [156] 1 6 8 10 : 1*6+8+10 [157] 1 6 9 9 : 1*6+9+9 [158] 1 6 9 10 : (1+10/6)*9 [159] 1 7 7 9 : 1+7+7+9 [160] 1 7 7 10 : 1*7+7+10 [161] 1 7 8 8 : 1+7+8+8 [162] 1 7 8 9 : 1*7+8+9 [163] 1 7 8 10 : 1*8*(10-7) [164] 1 7 9 9 : 7-1+9+9 [165] 1 7 9 10 : (1-9)*(7-10) [166] 1 8 8 8 : 1*8+8+8 [167] 1 8 8 9 : 8-1+8+9 [168] 1 8 8 10 : (1-8+10)*8 [169] 2 2 2 3 : 2*(2+2)*3 [170] 2 2 2 4 : (2+2)*(2+4) [171] 2 2 2 5 : 2*(2+2*5) [172] 2 2 2 7 : 2*(2*7-2) [173] 2 2 2 8 : 2*(2+2+8) [174] 2 2 2 9 : 2+2*(2+9) [175] 2 2 2 10 : 2+2+2*10 [176] 2 2 3 3 : (2+2)*(3+3) [177] 2 2 3 4 : (2+2+4)*3 [178] 2 2 3 5 : (2*5-2)*3 [179] 2 2 3 6 : 2*(2*3+6) [180] 2 2 3 7 : 2*(2+3+7) [181] 2 2 3 8 : 2+2*(3+8) [182] 2 2 3 9 : (2+2/3)*9 [183] 2 2 3 10 : 2*(3+10)-2 [184] 2 2 4 4 : 2*(2*4+4) [185] 2 2 4 5 : 2+2+4*5 [186] 2 2 4 6 : 2*(2+4+6) [187] 2 2 4 7 : 2+2*(4+7) [188] 2 2 4 8 : (2+2)*4+8 [189] 2 2 4 9 : 2+2*9+4 [190] 2 2 4 10 : (2+2)*(10-4) [191] 2 2 5 5 : 2*(2+5+5) [192] 2 2 5 6 : 2+2*(5+6) [193] 2 2 5 7 : 2*5+2*7 [194] 2 2 5 8 : 2*(5+8)-2 [195] 2 2 5 9 : 2*(5-2+9) [196] 2 2 5 10 : 2*(2+5)+10 [197] 2 2 6 6 : 2*6+2*6 [198] 2 2 6 7 : 2*(2+7)+6 [199] 2 2 6 8 : 2*(2+6)+8 [200] 2 2 6 9 : 2*(2*9-6) [201] 2 2 6 10 : 2+2*6+10 [202] 2 2 7 7 : 2*(7-2+7) [203] 2 2 7 8 : 2+2*7+8 [204] 2 2 7 10 : 2*(7+10/2) [205] 2 2 8 8 : (2+2)*8-8 [206] 2 2 8 9 : 2*9-2+8 [207] 2 2 8 10 : 2*(2*10-8) [208] 2 2 9 10 : 2*(9-2)+10 [209] 2 2 10 10 : 2+2+10+10 [210] 2 3 3 3 : 2*(3*3+3) [211] 2 3 3 5 : 2*(3*5-3) [212] 2 3 3 6 : 2*(3+3+6) [213] 2 3 3 7 : 2*3*(7-3) [214] 2 3 3 8 : (2*3-3)*8 [215] 2 3 3 9 : (2+3)*3+9 [216] 2 3 3 10 : 3*(3+10/2) [217] 2 3 4 4 : (2+3)*4+4 [218] 2 3 4 5 : 2*(3+4+5) [219] 2 3 4 6 : 2+3*6+4 [220] 2 3 4 7 : 2*(3+7)+4 [221] 2 3 4 8 : (2-3+4)*8 [222] 2 3 4 9 : 2/3*4*9 [223] 2 3 4 10 : 2*(3+4)+10 [224] 2 3 5 5 : 2-3+5*5 [225] 2 3 5 6 : 2*3*5-6 [226] 2 3 5 7 : 2+3*5+7 [227] 2 3 5 8 : 2*(3+5)+8 [228] 2 3 5 9 : 2+3*9-5 [229] 2 3 5 10 : 2*(5-3+10) [230] 2 3 6 6 : 2*(3+6)+6 [231] 2 3 6 7 : (2*7-6)*3 [232] 2 3 6 8 : (2+8)*3-6 [233] 2 3 6 9 : 2*6+3+9 [234] 2 3 6 10 : 2*3*(10-6) [235] 2 3 7 7 : 2*7+3+7 [236] 2 3 7 8 : 2*(7-3+8) [237] 2 3 7 9 : 2*(3*7-9) [238] 2 3 7 10 : (2+7*10)/3 [239] 2 3 8 8 : (2*8-8)*3 [240] 2 3 8 9 : 8/2*(9-3) [241] 2 3 8 10 : 2*3+8+10 [242] 2 3 9 9 : 2*3+9+9 [243] 2 3 9 10 : 2+3+9+10 [244] 2 3 10 10 : 2*(10-3)+10 [245] 2 4 4 4 : 2*(4+4+4) [246] 2 4 4 5 : (2+5)*4-4 [247] 2 4 4 6 : 2+4*4+6 [248] 2 4 4 7 : 2*4*(7-4) [249] 2 4 4 8 : 2*(4+4)+8 [250] 2 4 4 9 : 4*(9-2)-4 [251] 2 4 4 10 : 2*(4+10)-4 [252] 2 4 5 5 : 2*(5+5)+4 [253] 2 4 5 6 : 2*(4+5)+6 [254] 2 4 5 7 : (4-2)*(5+7) [255] 2 4 5 8 : 2*(4*5-8) [256] 2 4 5 9 : (2+4)*(9-5) [257] 2 4 5 10 : 2*5+4+10 [258] 2 4 6 6 : (2-4+6)*6 [259] 2 4 6 7 : 2+4*7-6 [260] 2 4 6 8 : 2/4*6*8 [261] 2 4 6 9 : (2+4/6)*9 [262] 2 4 6 10 : 2*4+6+10 [263] 2 4 7 7 : 2*(7+7)-4 [264] 2 4 7 8 : (2*7-8)*4 [265] 2 4 7 9 : 2*4+7+9 [266] 2 4 7 10 : 2*4*(10-7) [267] 2 4 8 8 : 2*4+8+8 [268] 2 4 8 9 : 8*(9-(2+4)) [269] 2 4 8 10 : 2+4+8+10 [270] 2 4 9 9 : 2+4+9+9 [271] 2 4 9 10 : 2*9-4+10 [272] 2 4 10 10 : (2+4/10)*10 [273] 2 5 5 7 : 2*7+5+5 [274] 2 5 5 8 : (2+5/5)*8 [275] 2 5 5 9 : 2*5+5+9 [276] 2 5 5 10 : (5-2/10)*5 [277] 2 5 6 6 : (2*5-6)*6 [278] 2 5 6 7 : (2-5+7)*6 [279] 2 5 6 8 : 2*5+6+8 [280] 2 5 6 9 : 5/2*6+9 [281] 2 5 6 10 : 2/5*6*10 [282] 2 5 7 7 : 2*5+7+7 [283] 2 5 7 8 : (2*5-7)*8 [284] 2 5 7 9 : 5*7-(2+9) [285] 2 5 7 10 : 2+5+7+10 [286] 2 5 8 8 : 5*8-2*8 [287] 2 5 8 9 : 2+5+8+9 [288] 2 5 8 10 : (2-10)*(5-8) [289] 2 5 9 10 : 2*10-5+9 [290] 2 5 10 10 : 2*(10/5+10) [291] 2 6 6 6 : 2*6+6+6 [292] 2 6 6 7 : (6+6*7)/2 [293] 2 6 6 8 : (2+6/6)*8 [294] 2 6 6 9 : 2*(6+9)-6 [295] 2 6 6 10 : 2+6+6+10 [296] 2 6 7 8 : (2-6+7)*8 [297] 2 6 7 9 : 2+6+7+9 [298] 2 6 7 10 : (2+6)*(10-7) [299] 2 6 8 8 : 2+6+8+8 [300] 2 6 8 9 : 2/6*8*9 [301] 2 6 8 10 : 2*(6+10)-8 [302] 2 6 9 9 : (2+6/9)*9 [303] 2 6 9 10 : (2-10)*(6-9) [304] 2 6 10 10 : 2*10-6+10 [305] 2 7 7 8 : 2+7+7+8 [306] 2 7 7 10 : (2+10/7)*7 [307] 2 7 8 8 : (2-7+8)*8 [308] 2 7 8 9 : 2*(7+9)-8 [309] 2 7 9 10 : 2*(9-7+10) [310] 2 7 10 10 : 2*(7+10)-10 [311] 2 8 8 8 : 2*(8+8)-8 [312] 2 8 8 9 : (2-8+9)*8 [313] 2 8 8 10 : 8-2+8+10 [314] 2 8 9 9 : (2+9/9)*8 [315] 2 8 9 10 : 2*(8+9)-10 [316] 2 8 10 10 : 2*(10-8+10) [317] 2 9 10 10 : 9+10/2+10 [318] 3 3 3 3 : 3*3*3-3 [319] 3 3 3 4 : 3+3*(3+4) [320] 3 3 3 5 : 3*3+3*5 [321] 3 3 3 6 : 3*(3+3)+6 [322] 3 3 3 7 : 3*(3/3+7) [323] 3 3 3 8 : 3*(3-3+8) [324] 3 3 3 9 : 3*(9-3/3) [325] 3 3 3 10 : 3-3*(3-10) [326] 3 3 4 4 : 3*(3*4-4) [327] 3 3 4 5 : (3/3+5)*4 [328] 3 3 4 6 : 3-3+4*6 [329] 3 3 4 7 : 3*(4-3+7) [330] 3 3 4 8 : (3+3)*(8-4) [331] 3 3 4 9 : 3*(3-4+9) [332] 3 3 5 5 : 5*5-3/3 [333] 3 3 5 6 : 3+3*5+6 [334] 3 3 5 7 : 3*(3*5-7) [335] 3 3 5 9 : (3+3)*(9-5) [336] 3 3 5 10 : 3*3+5+10 [337] 3 3 6 6 : 3*(6/3+6) [338] 3 3 6 7 : 3-(3-6)*7 [339] 3 3 6 8 : (3*3-6)*8 [340] 3 3 6 9 : 3*3+6+9 [341] 3 3 6 10 : 3*(3*6-10) [342] 3 3 7 7 : (3+3/7)*7 [343] 3 3 7 8 : 3*3+7+8 [344] 3 3 7 9 : (3-7)*(3-9) [345] 3 3 8 8 : 8/(3-8/3) [346] 3 3 8 9 : 3*(3+8)-9 [347] 3 3 8 10 : 3+3+8+10 [348] 3 3 9 9 : 3+3+9+9 [349] 3 3 9 10 : 3+3*10-9 [350] 3 4 4 4 : (3+4)*4-4 [351] 3 4 4 5 : 3+4*4+5 [352] 3 4 4 6 : (3+4/4)*6 [353] 3 4 4 7 : 3*(4/4+7) [354] 3 4 4 8 : 3*4+4+8 [355] 3 4 4 9 : 3*(9-4/4) [356] 3 4 4 10 : 4*(10-3)-4 [357] 3 4 5 5 : 3-4+5*5 [358] 3 4 5 6 : (3-4+5)*6 [359] 3 4 5 7 : 3*4+5+7 [360] 3 4 5 8 : (3+5)*4-8 [361] 3 4 5 9 : 3*(4-5+9) [362] 3 4 5 10 : 3*4/5*10 [363] 3 4 6 6 : 3*4+6+6 [364] 3 4 6 8 : 3*4*(8-6) [365] 3 4 6 9 : (3-6+9)*4 [366] 3 4 6 10 : 3*(4-6+10) [367] 3 4 7 7 : 3+4*7-7 [368] 3 4 7 8 : 4*(7-3)+8 [369] 3 4 7 9 : 3*(4+7)-9 [370] 3 4 7 10 : 3+4+7+10 [371] 3 4 8 9 : 3+4+8+9 [372] 3 4 8 10 : 3*4*(10-8) [373] 3 4 9 9 : 3*(9-4)+9 [374] 3 4 10 10 : 3*10+4-10 [375] 3 5 5 6 : 3*(5+5)-6 [376] 3 5 5 7 : 3*(5/5+7) [377] 3 5 5 8 : 3*(5-5+8) [378] 3 5 5 9 : (3+9/5)*5 [379] 3 5 6 6 : (3-5+6)*6 [380] 3 5 6 7 : 3*(6-5+7) [381] 3 5 6 8 : 3*(6-5)*8 [382] 3 5 6 9 : 3*(5-6+9) [383] 3 5 6 10 : 3+5+6+10 [384] 3 5 7 8 : 3-(5-8)*7 [385] 3 5 7 9 : 3+5+7+9 [386] 3 5 7 10 : 3*(5-7+10) [387] 3 5 8 8 : 3+5+8+8 [388] 3 5 8 9 : 3*9+5-8 [389] 3 5 9 9 : (3-9)*(5-9) [390] 3 5 9 10 : (3+9)/5*10 [391] 3 5 10 10 : 3*(10-10/5) [392] 3 6 6 6 : (3+6/6)*6 [393] 3 6 6 7 : 3*(6/6+7) [394] 3 6 6 8 : 3*(6-6+8) [395] 3 6 6 9 : 3+6+6+9 [396] 3 6 6 10 : (6-3)*10-6 [397] 3 6 7 7 : 3*(7-6+7) [398] 3 6 7 8 : 3+6+7+8 [399] 3 6 7 9 : 3*(6-7+9) [400] 3 6 7 10 : 6/3*7+10 [401] 3 6 8 8 : (3+8/8)*6 [402] 3 6 8 9 : (3-8+9)*6 [403] 3 6 8 10 : 3*(6-8+10) [404] 3 6 9 9 : 3*9+6-9 [405] 3 6 9 10 : (3-9)*(6-10) [406] 3 6 10 10 : (3-6/10)*10 [407] 3 7 7 7 : 3+7+7+7 [408] 3 7 7 8 : 3*(7-7+8) [409] 3 7 7 9 : 3*(9-7/7) [410] 3 7 7 10 : 3*7-7+10 [411] 3 7 8 8 : 3*(7+8/8) [412] 3 7 8 9 : 3*(7-8+9) [413] 3 7 9 9 : 3*(7+9/9) [414] 3 7 9 10 : 3*(7-9+10) [415] 3 7 10 10 : 3*(7+10/10) [416] 3 8 8 8 : 3*8-8+8 [417] 3 8 8 9 : 3*8*(9-8) [418] 3 8 8 10 : (8*10-8)/3 [419] 3 8 9 9 : 3*8-9+9 [420] 3 8 9 10 : 3*8*(10-9) [421] 3 8 10 10 : 3*8-10+10 [422] 3 9 9 9 : 3*(9-9/9) [423] 3 9 9 10 : 3*(9+9-10) [424] 3 9 10 10 : 3*(9-10/10) [425] 4 4 4 4 : 4*4+4+4 [426] 4 4 4 5 : 4*(4/4+5) [427] 4 4 4 6 : 4*(4-4+6) [428] 4 4 4 7 : (4+4)*(7-4) [429] 4 4 4 8 : 4*(4+4)-8 [430] 4 4 4 9 : 4-4*(4-9) [431] 4 4 4 10 : 4*(4*4-10) [432] 4 4 5 5 : (4+4/5)*5 [433] 4 4 5 6 : 4*(5-4)*6 [434] 4 4 5 7 : 4*(4-5+7) [435] 4 4 5 8 : (4+4-5)*8 [436] 4 4 5 10 : 4-4*(5-10) [437] 4 4 6 8 : 4*(4-6+8) [438] 4 4 6 9 : 4*4/6*9 [439] 4 4 6 10 : 4+4+6+10 [440] 4 4 7 7 : (4-4/7)*7 [441] 4 4 7 8 : 4+4*7-8 [442] 4 4 7 9 : 4+4+7+9 [443] 4 4 7 10 : (4+4)*(10-7) [444] 4 4 8 8 : 4+4+8+8 [445] 4 4 8 9 : 4*9-(4+8) [446] 4 4 8 10 : 4*(4-8+10) [447] 4 4 10 10 : (10*10-4)/4 [448] 4 5 5 5 : 4*(5/5+5) [449] 4 5 5 6 : 4*(5-5+6) [450] 4 5 5 7 : 4*(7-5/5) [451] 4 5 5 8 : (4-5/5)*8 [452] 4 5 5 9 : 4*5-5+9 [453] 4 5 5 10 : 4+5+5+10 [454] 4 5 6 6 : 4*(5+6/6) [455] 4 5 6 7 : 4*(5-6+7) [456] 4 5 6 8 : (4+5-6)*8 [457] 4 5 6 9 : 4+5+6+9 [458] 4 5 6 10 : 4*5-6+10 [459] 4 5 7 7 : 4*(5+7/7) [460] 4 5 7 8 : 4+5+7+8 [461] 4 5 7 9 : 4*7+5-9 [462] 4 5 7 10 : 4-(5-7)*10 [463] 4 5 8 8 : 4*(5+8/8) [464] 4 5 8 9 : 4*(5-8+9) [465] 4 5 8 10 : (4+8)/5*10 [466] 4 5 9 9 : 4*(5+9/9) [467] 4 5 9 10 : 4*(5-9+10) [468] 4 5 10 10 : 4*(5+10/10) [469] 4 6 6 6 : 4*6-6+6 [470] 4 6 6 7 : 4*6*(7-6) [471] 4 6 6 8 : 4+6+6+8 [472] 4 6 6 9 : 4*9-(6+6) [473] 4 6 6 10 : 6/4*(6+10) [474] 4 6 7 7 : 4+6+7+7 [475] 4 6 7 8 : (4+6-7)*8 [476] 4 6 7 9 : 6/4*(7+9) [477] 4 6 7 10 : 4*7+6-10 [478] 4 6 8 8 : 4*6-8+8 [479] 4 6 8 9 : 4*6*(9-8) [480] 4 6 8 10 : 4-(6-8)*10 [481] 4 6 9 9 : 4*6-9+9 [482] 4 6 9 10 : 4*6*(10-9) [483] 4 6 10 10 : 4*6-10+10 [484] 4 7 7 7 : 4*(7-7/7) [485] 4 7 7 8 : 4*(7+7-8) [486] 4 7 8 8 : (4+7-8)*8 [487] 4 7 8 9 : 4*(7+8-9) [488] 4 7 8 10 : 7/4*8+10 [489] 4 7 9 9 : 4*(7-9/9) [490] 4 7 9 10 : 4*(7+9-10) [491] 4 7 10 10 : 4*(7-10/10) [492] 4 8 8 8 : (4-8/8)*8 [493] 4 8 8 9 : (4+8-9)*8 [494] 4 8 8 10 : 4*(8+8-10) [495] 4 8 9 9 : (4-9/9)*8 [496] 4 8 9 10 : (4+9-10)*8 [497] 4 8 10 10 : 4-(8-10)*10 [498] 4 9 9 10 : 9-4+9+10 [499] 5 5 5 5 : 5*5-5/5 [500] 5 5 5 6 : 5*5+5-6 [501] 5 5 5 9 : 5+5+5+9 [502] 5 5 6 6 : (5+5-6)*6 [503] 5 5 6 7 : 5*5+6-7 [504] 5 5 6 8 : 5+5+6+8 [505] 5 5 7 7 : 5+5+7+7 [506] 5 5 7 8 : 5*5+7-8 [507] 5 5 7 10 : (5+7)/5*10 [508] 5 5 8 8 : 5*5-8/8 [509] 5 5 8 9 : 5*5+8-9 [510] 5 5 8 10 : (5+10)/5*8 [511] 5 5 9 9 : 5*5-9/9 [512] 5 5 9 10 : 5*5+9-10 [513] 5 5 10 10 : 5*5-10/10 [514] 5 6 6 6 : (5-6/6)*6 [515] 5 6 6 7 : 5+6+6+7 [516] 5 6 6 8 : 6-(5-8)*6 [517] 5 6 6 9 : 6*9-5*6 [518] 5 6 6 10 : (6+6)/5*10 [519] 5 6 7 7 : (5-7/7)*6 [520] 5 6 7 8 : (5+7)*(8-6) [521] 5 6 7 9 : 6-(5-7)*9 [522] 5 6 8 8 : (5+6-8)*8 [523] 5 6 8 9 : (5+8-9)*6 [524] 5 6 8 10 : 5*6*8/10 [525] 5 6 9 9 : 5*(9-6)+9 [526] 5 6 9 10 : (5+9-10)*6 [527] 5 6 10 10 : (5-10/10)*6 [528] 5 7 7 9 : (5+7)*(9-7) [529] 5 7 7 10 : (7-5)*7+10 [530] 5 7 8 8 : (7-5)*8+8 [531] 5 7 8 9 : (5+7-9)*8 [532] 5 7 8 10 : (5+7)*(10-8) [533] 5 7 9 10 : 5*(10-7)+9 [534] 5 7 10 10 : 7/5*10+10 [535] 5 8 8 8 : 5*8-(8+8) [536] 5 8 8 9 : 8/(8-5)*9 [537] 5 8 8 10 : (5+8-10)*8 [538] 5 9 10 10 : 9-5+10+10 [539] 6 6 6 6 : 6+6+6+6 [540] 6 6 6 8 : 6*(6+6-8) [541] 6 6 6 9 : 6-6*(6-9) [542] 6 6 6 10 : 6*10-6*6 [543] 6 6 7 9 : 6*(6+7-9) [544] 6 6 7 10 : 6-6*(7-10) [545] 6 6 8 8 : 6/(8-6)*8 [546] 6 6 8 9 : 6-(6-8)*9 [547] 6 6 8 10 : 6*(6+8-10) [548] 6 6 9 10 : (6+10)/6*9 [549] 6 7 7 10 : 6*(7+7-10) [550] 6 7 8 9 : 6*8/(9-7) [551] 6 7 8 10 : 6*7-(8+10) [552] 6 7 9 9 : 6*7-(9+9) [553] 6 7 10 10 : (10-7)*10-6 [554] 6 8 8 8 : (8-6)*8+8 [555] 6 8 8 9 : (8+8)/6*9 [556] 6 8 8 10 : 6*8/(10-8) [557] 6 8 9 9 : 8/6*(9+9) [558] 6 8 9 10 : 6-(8-10)*9 [559] 6 9 9 10 : 9/6*10+9 [560] 6 10 10 10 : 10-6+10+10 [561] 7 7 9 10 : 7*(9-7)+10 [562] 7 8 8 9 : 8-(7-9)*8 [563] 7 8 8 10 : 8*10-7*8 [564] 7 8 9 10 : 8*9/(10-7) [565] 7 8 10 10 : 7*(10-8)+10 [566] 8 8 8 10 : 8-8*(8-10) */ #include<stdio.h> #include<float.h> #include<math.h> #include<string.h> #include<ctype.h> int bFound; // 标志是否找到一个解,只要找到一个解,此变量为true #define AUTO // 如果把这句注释掉,就是手动输入四张牌 ////////////////////////////////////////////////////////////////// // // 以下这一段是用于表达式解析的,基于递归下降的写法 // 由于算24所用表达式十分简单,而且不需要判断格式错误, // 于是相应的程序也比较简单 // // E -> I{+I} | I{-I} // I -> F{*F} | F{/F} // F -> N | (E) // N -> 数字 // int iCur; const char *str; struct node { node *left; node *right; double dValue; char chOp; node(node *left, char chOp, node *right) { this->left = left; this->chOp = chOp; this->right = right; dValue = 0; } node(double dValue) { this->left = NULL; this->chOp = ' '; this->right = NULL; this->dValue = dValue; } ~node() { if (left != NULL) delete left; if (right != NULL) delete right; } }; node *E(); node *F(); node *I(); node * F() { node * pNode; char chOp = str[iCur++]; if (chOp == '(') { pNode = E(); iCur++; } else { char strNum[10]; int iPos = 0; double dNum; while (isdigit(chOp)) { strNum[iPos++] = chOp; chOp = str[iCur++]; } strNum[iPos] = 0; iCur--; sscanf(strNum, "%lf", &dNum); pNode = new node(dNum); } return pNode; } node * I() { node *left, *right; bool bFirst = true; char chOp; do { if (bFirst) { left = F(); bFirst = false; } else { right = F(); left = new node(left, chOp, right); } chOp = str[iCur++]; } while (chOp == '*' || chOp == '/'); iCur--; return left; } node * E() { node *left, *right; bool bFirst = true; char chOp; do { if (bFirst) { left = I(); bFirst = false; } else { right = I(); left = new node(left, chOp, right); } chOp = str[iCur++]; } while (chOp == '+' || chOp == '-'); iCur--; return left; } double Compute(node *exp) { if (exp->chOp == ' ') return exp->dValue; switch (exp->chOp) { case '+': return Compute(exp->left) + Compute(exp->right); case '-': return Compute(exp->left) - Compute(exp->right); case '*': return Compute(exp->left) * Compute(exp->right); } double dValue = Compute(exp->right); // 遇到除数为0的情况,我就丢出一个整型数,不再继续计算 if (fabs(dValue) < 1e-6) throw 0; return Compute(exp->left) / dValue; } double solveExp(const char *strExp) { iCur = 0; str = strExp; node *pResult = E(); double dRet; try { dRet = Compute(pResult); } catch (int) { dRet = 0; } delete pResult; return dRet; } // // 以上这一段是用于表达式解析的,基于递归下降的写法 // // E -> I{+I} | I{-I} // I -> F{*F} | F{/F} // F -> N | (E) // N -> 数字 // ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// // // // 下面才是重点 // // // ////////////////////////////////////////////////////////////////// void main() { int aiCardArrange[24][4]= // 四张牌的排列 { {0,1,2,3}, {0,1,3,2}, {0,2,1,3}, {0,2,3,1}, {0,3,1,2}, {0,3,2,1}, {1,0,2,3}, {1,0,3,2}, {1,2,0,3}, {1,2,3,0}, {1,3,0,2}, {1,3,2,0}, {2,0,1,3}, {2,0,3,1}, {2,1,0,3}, {2,1,3,0}, {2,3,0,1}, {2,3,1,0}, {3,0,1,2}, {3,0,2,1}, {3,1,0,2}, {3,1,2,0}, {3,2,0,1}, {3,2,1,0} }; int aiOpArrange[3]; // 四张牌中三个表达式空位的状态 char strExpFormat[11][20]= // 四张牌组成的表达式的11种状态, { // 这里我直接用了printf中的format string的形式 "%d%c%d%c%d%c%d", "(%d%c%d)%c%d%c%d", "%d%c(%d%c%d)%c%d", "%d%c%d%c(%d%c%d)", "(%d%c%d)%c(%d%c%d)", "(%d%c%d%c%d)%c%d", "%d%c(%d%c%d%c%d)", "((%d%c%d)%c%d)%c%d", "(%d%c(%d%c%d))%c%d", "%d%c((%d%c%d)%c%d)", "%d%c(%d%c(%d%c%d))" }; char strOp[5]={'+','-','*','/'}; // 四种运算符 char strExp[20]; // 由四张牌生成的表达式 int aiCard[4],aiInput[4]; // aiCard是参与运算的四张牌(已被排列), // aiInput是输入的四张牌 int i,j,k,l,iTemp,iIndex; // 一些小变量 double dResult; // 表达式的运算结果 iIndex=1; #ifdef AUTO // 为了减少程序的行长,这四个循环我没有逐级缩进 for (aiInput[0] = 1; aiInput[0] <= 10; aiInput[0]++) for (aiInput[1] = aiInput[0]; aiInput[1] <= 10; aiInput[1]++) for (aiInput[2] = aiInput[1]; aiInput[2] <= 10; aiInput[2]++) for (aiInput[3] = aiInput[2]; aiInput[3] <= 10; aiInput[3]++) #else scanf("%d%d%d%d", &aiInput[0], &aiInput[1], &aiInput[2],&aiInput[3]); #endif { bFound = 0; for(i = 0; i < 24; i++) { for (j = 0; j < 4; j++) aiCard[j] = aiInput[aiCardArrange[i][j]]; for (k = 0; k < 64; k++) { iTemp = k; aiOpArrange[0] = iTemp % 4; iTemp /= 4; aiOpArrange[1] = iTemp % 4; iTemp /= 4; aiOpArrange[2] = iTemp % 4; for (l = 0; l < 11; l++) { sprintf(strExp, strExpFormat[l], aiCard[0], strOp[aiOpArrange[0]], aiCard[1], strOp[aiOpArrange[1]], aiCard[2], strOp[aiOpArrange[2]], aiCard[3]); strcat(strExp, "`"); // 添加终结符以便解析 dResult = solveExp(strExp); strExp[strlen(strExp) - 1] = 0; // 去掉刚添加的终结符 if (fabs(dResult - 24) < 1e-6) { bFound = 1; printf("[%03d] %2d %2d %2d %2d : %14s", iIndex, aiInput[0], aiInput[1], aiInput[2], aiInput[3], strExp); if (iIndex % 2 == 0) printf("\n"); else printf(" "); iIndex++; break; } } if (bFound) break; } if (bFound) break; } } #ifndef AUTO if (!bFound) puts("No solution."); #endif } |
B2层 发表时间: 04-04-10 19:13 |
![]() | 回复: kert_t8 [kert_t8] ![]() |
登录 |
楼上的牛,不过11种算法最后可以精简成5种,不过是多少我忘了 我们以前做过这个,请别人给我们讲过这个算法 |
B3层 发表时间: 04-04-12 10:00 |
![]() | 回复: cyshaoping [cyshaoping] ![]() |
登录 |
我只是转载的,哪有牛啊? 哈哈! |
B4层 发表时间: 04-04-14 12:25 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号