问题标题: 酷町堂:2636 24点,求大佬求助,我只得了90分

0
0
已解决
栾峻岩
栾峻岩
初级天翼
初级天翼
#include <iostream>
using namespace std;
bool dfs(int a[],int num)
{
    if (num==1)
    {
        if (a[1]==24) return true;
        else return false;
    }
    else
    {
        int na[5];
        bool used[5]={0};
        for (int i=1;i<=num;i++)
        {
            int x,y;
            x=a[i];
            used[i]=true;
            for (int j=1;j<=num;j++)
            {
                int cnt=1;
                if (!used[j])
                {
                    y=a[j];
                    used[j]=true;
                    for (int k=1;k<=num;k++)
                    {
                        if (!used[k])
                        {
                            na[++cnt]=a[k];
                        } 
                    }
                    na[1]=x+y;
                    if (dfs(na,num-1)) return true;
                    na[1]=x-y;
                    if (dfs(na,num-1)) return true;
                    na[1]=x*y;
                    if (dfs(na,num-1)) return true;
                    if (y!=0 && x%y==0)
                    {
                        na[1]=x/y;
                        if (dfs(na,num-1)) true;
                    }
                    used[j]=false;
                }
            }
            used[i]=false;
        }
    }
    return false;
}
int main()
{
    int a[5];
    for (int i=1;i<=4;i++)
    {
        cin>>a[i];
    }
    if (dfs(a,4)) cout<<"Yes\n";
    else cout<<"No\n";
    return 0;
}

只得了90分,求大佬,巨佬求助。

测试点#8错了。(不是超时,是WA


题目网址:point here

题目:

几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”。您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,要求运算结果等于24。

您可以使用的运算只有:+,-,,/,您还可以使用()来改变运算顺序。注意:所有的中间结果须是整数,所以一些除法运算是不允许的(例如,(22)/4是合法的,2*(2/4)是不合法的)。下面我们给出一个游戏的具体例子:

若给出的4个操作数是:1、2、3、7,则一种可能的解答是1+2+3*7=24。

输入描述 Input Description

只有一行,四个1到9之间的自然数。

输出描述 Output Description

如果有解的话,输出"Yes";没有解输出"No"

样例输入 Sample Input

1 2 3 7

样例输出 Sample Output

Yes

@陆麟瑞 @葛新 @杨喆 @贾文卓 @Every Dalao

栾峻岩在2018-09-17 12:20:12追加了内容

@杨喆 @酷町喵~o( =∩ω∩= )o~ @贾敬波 @葛新 @陆麟瑞 @沈吴敏 @许正全 @陆姗姗 @贾文卓 @贾子昂 @刘斐 @樊澄宇 

 

   求助,为什么九十分,请各位大佬找找问题。


1
已采纳
贾子昂
贾子昂
中级守护
中级守护

@栾峻岩  

我试了一下,42行你这里改成

return true; 

就满分了 %%%

0
0
0
0
周建勋
周建勋
中级光能
中级光能

对呀,干嘛加\n呀???

0
陆麟瑞
陆麟瑞
资深天翼
资深天翼

Orz 太强辣

您这是要AKNOIP啊%%%

0
我要回答