StarWing83 发表于 2008-6-21 13:53

[原创]算24

今天看见飞燕的Flash版算24了,手痒了也想写一个,没想到这玩意儿就一纸老虎,看上去很麻烦,实际上搜索空间非常小,算起来很简单- -下面给出代码,深搜,没优化过,大家可以编译了试试看,GCC+VC9通过编译……
有Bug就回帖报告吧~~~

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include <algorithm>
[/color][color=#FF0000]#include <iostream>
[/color][color=#0000FF]using namespace [/color][color=#FF0000]std[/color];

[color=#0000FF]int [/color]num[color=#800000][[/color][color=#8000C0]4[/color][color=#800000]][/color],opt[color=#800000][[/color][color=#8000C0]4[/color][color=#800000]][/color],res=[color=#8000C0]24[/color],i;
[color=#0000FF]char [/color]opts[color=#800000][][/color]=[color=#FF00FF]"+-*/"[/color];

[color=#0000FF]bool [/color][color=#008080]IsOK[/color]()
[color=#800000]{
    [/color][color=#0000FF]double [/color]sum=num[color=#800000][[/color][color=#8000C0]0[/color][color=#800000]][/color];
    [color=#0000FF]for [/color](i=[color=#8000C0]0[/color];i<[color=#8000C0]3[/color];i++)
        [color=#0000FF]switch [/color](opt[color=#800000][[/color]i[color=#800000]][/color])
        [color=#800000]{
        [/color][color=#0000FF]case [/color][color=#8000C0]0[/color]:sum+=num[color=#800000][[/color]i+[color=#8000C0]1[/color][color=#800000]][/color];[color=#0000FF]break[/color];
        [color=#0000FF]case [/color][color=#8000C0]1[/color]:sum-=num[color=#800000][[/color]i+[color=#8000C0]1[/color][color=#800000]][/color];[color=#0000FF]break[/color];
        [color=#0000FF]case [/color][color=#8000C0]2[/color]:sum*=num[color=#800000][[/color]i+[color=#8000C0]1[/color][color=#800000]][/color];[color=#0000FF]break[/color];
        [color=#0000FF]case [/color][color=#8000C0]3[/color]:[color=#0000FF]if [/color](num[color=#800000][[/color]i+[color=#8000C0]1[/color][color=#800000]][/color]==[color=#8000C0]0[/color])[color=#0000FF]return [/color]false;
            sum/=num[color=#800000][[/color]i+[color=#8000C0]1[/color][color=#800000]][/color];[color=#0000FF]break[/color];
        [color=#800000]}
    [/color][color=#0000FF]if [/color](sum == res)[color=#0000FF]return [/color]true;
    [color=#0000FF]return [/color]false;
[color=#800000]}

[/color][color=#0000FF]int [/color][color=#FF0000]main[/color]()
[color=#800000]{
    [/color][color=#0000FF]while [/color]([color=#FF0000]scanf[/color]([color=#FF00FF]"%d%d%d%d"[/color],num+[color=#8000C0]0[/color],num+[color=#8000C0]1[/color],num+[color=#8000C0]2[/color],num+[color=#8000C0]3[/color])!=[color=#800080]EOF[/color])
    [color=#800000]{
        [/color][color=#FF8000]sort[/color](num,num+[color=#8000C0]4[/color]);
        opt[color=#800000][[/color][color=#8000C0]0[/color][color=#800000]][/color]=opt[color=#800000][[/color][color=#8000C0]1[/color][color=#800000]][/color]=opt[color=#800000][[/color][color=#8000C0]2[/color][color=#800000]][/color]=[color=#8000C0]0[/color];
        [color=#0000FF]while [/color](![color=#008080]IsOK[/color]())
        [color=#800000]{
            [/color][color=#0000FF]for [/color](i=[color=#8000C0]0[/color];i<[color=#8000C0]3 [/color]&& opt[color=#800000][[/color]i[color=#800000]][/color]++>=[color=#8000C0]3[/color];i++) opt[color=#800000][[/color]i[color=#800000]][/color]=[color=#8000C0]0[/color];
            [color=#0000FF]if [/color](i == [color=#8000C0]3 [/color]&& ![color=#008080]next_permutation[/color](num,num+[color=#8000C0]4[/color]))
            [color=#800000]{
                [/color][color=#FF0000]puts[/color]([color=#FF00FF]"No Answer!"[/color]);
                [color=#0000FF]goto [/color]next;
            [color=#800000]}
        }
        [/color][color=#FF0000]printf[/color]([color=#FF00FF]"((%d %c %d) %c %d) %c %d = %d\n"[/color],
                num[color=#800000][[/color][color=#8000C0]0[/color][color=#800000]][/color],opts[color=#800000][[/color]opt[color=#800000][[/color][color=#8000C0]0[/color][color=#800000]]][/color],
                num[color=#800000][[/color][color=#8000C0]1[/color][color=#800000]][/color],opts[color=#800000][[/color]opt[color=#800000][[/color][color=#8000C0]1[/color][color=#800000]]][/color],
                num[color=#800000][[/color][color=#8000C0]2[/color][color=#800000]][/color],opts[color=#800000][[/color]opt[color=#800000][[/color][color=#8000C0]2[/color][color=#800000]]][/color],
                num[color=#800000][[/color][color=#8000C0]3[/color][color=#800000]][/color],res);
        next:;
    [color=#800000]}
}
[/color][/size][/font][/quote]


页: [1]

编程论坛