zoukankan      html  css  js  c++  java
  • 24Pointgame-----24点游戏

    题意简单     第一行是  测试数据有几组   然后分别有  几行  第一个数字是  有几个数字  第二个是 需要配出来的数字    

    下面附上我的代码   ---   我感觉 我这个代码 和其他人的都不一样 , 并且我的代码比较简洁 , 而且测试数据  还有我自己想过的数据 都过了  但是就是提交的时候总是  wrong    why ?  这是天将降大任于斯人也 么? 

    那也不用每一道题都这样坑我吧 ? 努力发现问题  !!!!

     1 /*      坚持一下 可以找到bug  的      */
     2 #include<stdio.h>
     3 #include<math.h>
     4 #include<string.h>
     5 int n,n1,visited[7];
     6 double a[7],target,zero=0.000001;
     7 bool DFS(double sum)
     8 {
     9     if(n1==n)
    10     {
    11         if(fabs(sum-target)<zero)
    12             return true;
    13         else
    14             return false;
    15     }
    16     for(int i=1;i<n;i++)                     //  这里出了错误        i 应该是从0 开始  后来修改代码的时候 没有注意到这一点   
    17     {
    18         if(!visited[i])
    19         {
    20             visited[i]=1;
    21             n1++;
    22             if(DFS(sum+a[i]))
    23                 return true;
    24             if(DFS(sum*a[i]))
    25                 return true;
    26             if(DFS(sum-a[i]))
    27                 return true;
    28             if(DFS(sum/a[i]))
    29                 return true;
    30             if(DFS(a[i]-sum))
    31                 return true;
    32             if(DFS(a[i]/sum))
    33                 return true;
    34             visited[i]=0;
    35             n1--;
    36         }
    37     }
    38     return false;
    39 }
    40 int main()
    41 {
    42     int t,i,mark;
    43     scanf("%d",&t);
    44     while(t--)
    45     {
    46         scanf("%d%lf",&n,&target);
    47         for(i=0;i<n;i++)
    48             scanf("%lf",&a[i]);
    49         memset(visited,0,sizeof(visited));
    50         for(mark=1,i=0;i<n;i++)
    51         {
    52             n1=1;
    53             visited[i]=1;
    54             if(DFS(a[i]))
    55             {
    56                 mark=0;
    57                 break;
    58             }
    59             visited[i]=0;
    60         }
    61         if(!mark)
    62             printf("Yes
    ");
    63         else
    64             printf("No
    ");
    65     }
    66     return 0;
    67 }

    实在是找不到 错误之处   , 先放在这 清醒一段时间之后 开始  再试试

    今天早上 来了之后  一遍 就   A   了     反映的问题  是   之前 修改代码   没有   修改深度搜索中   的  i  值    做题的时候 事先在纸上 理清思路然后再开始 敲代码省时又省力!

    下面附上正确的代码

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 int n,target,visited[7],m;
     5 double  a[7],zero=1e-6;
     6 bool DFS(double sum)
     7 {
     8     if(m==n&&fabs(sum-target)<zero)
     9         return true;
    10     for(int i=0;i<n;i++)
    11     {
    12         if(!visited[i])
    13         {
    14             m++;
    15             visited[i]=1;
    16             if(DFS(sum+a[i])) return true;
    17             if(DFS(sum*a[i])) return true;
    18             if(DFS(sum-a[i])) return true;
    19             if(DFS(sum/a[i])) return true;
    20             if(DFS(a[i]/sum)) return true;
    21             if(DFS(a[i]-sum)) return true;
    22             visited[i]=0;
    23             m--;
    24         }
    25     }
    26     return false;
    27 }
    28 int main()
    29 {
    30     int t;
    31     scanf("%d",&t);
    32     while(t--)
    33     {
    34         scanf("%d%d",&n,&target);
    35         for(int i=0;i<n;i++)
    36             scanf("%lf",&a[i]);
    37         int i,mark;
    38         for(mark=i=0;i<n;i++)
    39         {
    40             m=1;
    41             memset(visited,0,sizeof(visited));
    42             visited[i]=1;
    43             if(DFS(a[i]))
    44             {
    45                 mark=1;
    46                 break;
    47             }
    48         }
    49         if(mark)
    50             printf("Yes
    ");
    51         else
    52             printf("No
    ");
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    中国历史朝代公元对照简表
    [Solved] DashBoard – Excel Service: The data sources may be unreachable, may not be responding, or may have denied you access.
    Delete/Remove Project from TFS 2010
    Sharepoint site showing system account instead of my username on the top right corner.
    你的成功在于你每天养成的习惯
    Internet Information Services is running in 32bit emulation mode. Correct the issue listed above and rerun setup.
    Prepare to back up and restore a farm (Office SharePoint Server 2007)
    Word中字号与磅值的对应关系
    How to: Change the Frequency for Refreshing the Data Warehouse for Team System
    UI Automation in WPF/Silverlight
  • 原文地址:https://www.cnblogs.com/A-FM/p/5289535.html
Copyright © 2011-2022 走看看