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 }
  • 相关阅读:
    bzoj 4007
    bzoj 2190
    bzoj 2186
    bzoj 2005
    bzoj 2721
    bzoj 1951
    CF919F
    CF1005F
    CF1019C
    bitset用法详解
  • 原文地址:https://www.cnblogs.com/A-FM/p/5289535.html
Copyright © 2011-2022 走看看