码迷,mamicode.com
首页 > 其他好文 > 详细

BestCoder22 1002.NPY and arithmetic progression(hdu 5143) 解题报告

时间:2014-12-16 22:25:59      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   io   color   os   使用   sp   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143

题目意思:给出 1, 2, 3, 4 的数量,分别为a1, a2, a3, a4,问是否在每个数只使用一次的前提下,分成若干部分,每部分数的长度 >= 3且满足是等差数列。可以的话输出 Yes ,否则 No 。

  比赛的时候过了pretest,那个开心啊~~然后跟 XX 兽讨论了之后,才发现自己理解错了题目= =

  要用到深搜,问组合嘛~~组合就是有可能是(1, 2, 3, 4)、(1, 2, 3)、(2, 3, 4) 与 cnt[1] >= 3 || cnt[1] == 0 { (1, 1, 1), (0)}  ,cnt[2] >= 3 || cnt[2] == 0,cnt[3] >= 3 || cnt[3] == 0, cnt[4] >= 3 || cnt[4] == 0 的组合。

  cnt[i] 表示数字 i 的数量有cnt[i]个。其实总共有16种情况。

  0 0 0 0,  0 0 0 3,  0 0 3 0,  0 0 3 3

  0 3 0 0,  0 3 0 3,  0 3 3 0,  0 3 3 3

  3 0 0 0,  3 0 0 3,  3 0 3 0,  3 0 3 3

  3 3 0 0,  3 3 0 3,  3 3 3 0,  3 3 3 3 

  注意:填 3 的那些位置实际上 >= 3 都符合条件的。然后跟(1, 2, 3, 4)、(1, 2, 3)、(2, 3, 4) 组合

  

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 using namespace std;
 6 
 7 bool dfs(int a, int b, int c, int d)
 8 {
 9     if ((a >= 3 || !a) && (b >= 3 || !b) &&  (c >= 3 || !c) && (d >= 3 || !d))// (1,1,1),(2,2,2), (3,3,3), (4,4,4) 的组合
10         return true;
11     if (a >= 1 && b >= 1 && c >= 1 && d >= 1)  // (1, 2, 3, 4)
12     {
13         if (dfs(a-1, b-1, c-1, d-1))
14             return true;
15     }
16     if (a >= 1 && b >= 1 && c >= 1)    // (1, 2, 3)
17     {
18         if (dfs(a-1, b-1, c-1, d))
19             return true;
20     }
21     if (b >= 1 && c >= 1 && d >= 1)    // (2, 3, 4)
22     {
23         if (dfs(a, b-1, c-1, d-1))
24             return true;
25     }
26     return false;
27 }
28 
29 int main()
30 {
31     #ifndef ONLINE_JUDGE
32         freopen("in.txt", "r", stdin);
33     #endif // ONLINE_JUDGE
34     int T, ta, tb, tc, td;
35     while (scanf("%d", &T) != EOF)
36     {
37         while (T--)
38         {
39             scanf("%d%d%d%d", &ta, &tb, &tc, &td);
40             printf("%s\n", dfs(ta, tb, tc, td) ? "Yes" : "No");
41         }
42         return 0;
43     }
44 }

 

 

     

BestCoder22 1002.NPY and arithmetic progression(hdu 5143) 解题报告

标签:style   blog   http   ar   io   color   os   使用   sp   

原文地址:http://www.cnblogs.com/windysai/p/4168090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!