(http://acm.zzuli.edu.cn/problem.php?id=2267)

题目描述

小浩今年拿到了国家奖学金,本来很高兴的事,可小浩却默默不乐,原来是不愿请大家吃饭,小浩查了一下银行卡,一看还有8位数,于是嘴角向上微翘,冷笑一声,说想让我请客,先能回答出我的问题来。小浩的问题是给定一个8位的正整数,如果能判断出这8位数是否能组成一个日期的年月日(年份范围0000~9999),就可以请客,同学们还等什么,加油啦!

输入

输入有多行,每行一个8位的正整数。

输出

对于输入的每个整数,如果能组合成一个日期,输出“yes",否则,输出”no",每个输出占一行。

样例输入

32872313
10000000

样例输出

yes
no

思路

其实就是全排列,枚举所有情况+判断。(就是这么暴力!)
惦记我。。。

  • STL next_permutation
  • DFS搜索

AC代码

  • next_permutation
#include<iostream>
#include<string.h>
#include<algorithm>
#define N 100005
#define ll long long
using namespace std;
int a[N];
int d[N] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int judge (int year) {if(year % 400 == 0 || (year % 100 && year % 4 == 0))return 1;elsereturn 0;
}
int main (){            //freopen("in.txt", "r", stdin);int n;while (scanf("%d", &n) != EOF) {for (int i = 0; i < 8; i++) {a[i] = n % 10;n /= 10;}sort(a, a + 8);int flag = 0;do {int mon = a[5] + a[4] * 10;int day = a[7] + a[6] * 10;if (mon > 0 && mon <= 12 && day > 0 && day <= 31) {int year = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];if(judge(year))d[2] = 29;elsed[2] = 28;if (mon >= 1 && mon <= 12 && day >= 1 && day <= d[mon] ){flag = 1;break;}    }           } while (next_permutation(a, a + 8));if(flag)printf("yes\n");elseprintf("no\n");}return 0;
}
  • DFS
#include<iostream>
#include<string.h>
#include<algorithm>
#define N 100005
#define ll long long
using namespace std;
int vis[N], a[N], b[N], flag;
int d[N] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int judge (int year) {  //判断闰年 if(year % 400 == 0 || (year % 100 && year % 4 == 0))return 1;elsereturn 0;
}
void dfs(int now) {if (now == 9) {int day = b[7] + b[6] * 10;int mon = b[5] + b[4] * 10;int year = b[0] * 1000 + b[1] * 100 + b[2] * 10 + b[3];if (judge(year))d[2] = 29;elsed[2] = 28;if (mon > 0 && mon <= 12 && day > 0 && day <= d[mon]) {flag = 1;return ;} }for (int i = 0; i < 8; i++) {     if (vis[i] == 0) {b[now] = a[i];vis[i] = 1;dfs(now + 1);if (flag == 1)return ;vis[i] = 0;}}
}
int main (){            //freopen("in.txt", "r", stdin);int n;while (scanf("%d", &n) != EOF) {for (int i = 0; i < 8; i++) {a[i] = n % 10;n /= 10;}memset(vis, 0, sizeof(vis));flag = 0;dfs(1);if (flag) {printf("yes\n");} else {printf("no\n");}}return 0;
}

2267: scholarship(dfs , STL)相关推荐

  1. 滑雪问题(dfs+dp)

    滑雪问题(dfs+dp) 题目引入 佑少喜欢上网冲浪.最近他在贴吧得知滑铲可以消灭老虎,于是决定每天都到山坡上练习滑铲.不过佑少还没学会反重力滑铲,所以滑的区域必须向下倾斜,而且当滑到坡底,他不得不再 ...

  2. 骑士周游(dfs+greedy)

    骑士周游(DFS+Greedy): 提示:马踏棋盘问题 也称 骑士周游问题 记录一道dfs+greedy的题目, 这道题能够帮助我们更好的理解dfs中的优化问题 题目描述: 提示:马踏棋盘问题(骑士周 ...

  3. [C] [编程题]连通块(DFS解决)

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...

  4. 洛谷p1162填涂颜色(dfs写法)

    这道题本是放在试炼场bfs里的,但是我觉得dfs好写些 所以就用dfs过了 题目如下 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合 ...

  5. 数据结构实验之图论三:判断可达性(dfs/bfs)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  6. 蓝桥杯 历届试题 分考场(DFS+枚举)

    传送门 题目描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输入 第一行,一个整数n(1<n<100),表示参加考试 ...

  7. CodeForces 1361E James and the Chase(dfs + 结论)

    problem 洛谷链接 solution 看到这个 20%20\%20% 的特殊性质,脑海里第一个就想到了随机化算法.已经PTSD了着实上头 如果本题只是随便求一个 interesting\text ...

  8. [XSY] 分割(dfs树)

    分割 题目相当于问 删掉两个点后 图是否仍然连通 割点问题,考虑用dfs树解决 设删去点u,v(dfn[v]<dfn[u]) 把 u, v 删去之后整棵树大概断成了几个部分: • v 上面到根的 ...

  9. LeetCode 248. 中心对称数 III(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...

最新文章

  1. SLAM架构的两篇顶会论文解析
  2. 干货:NIST评测(SRE19)获胜团队声纹识别技术分析 | CSDN博文精选
  3. 【干货】目标检测比赛中的trick
  4. 机械制图手册_42条机械制图基础常识,带徒师傅必备!
  5. 浅析volatile原理及其使用
  6. poj2186 求有向图G中所有点都能到达的点的数量
  7. Java黑皮书课后题第8章:*8.30(代数:解答线性方程)编写一个方法,解答下面的2*2线性方程组系统
  8. [译]GLUT教程 - 每秒帧数
  9. url.getinputsteam 获取不完整_年度营销方案合集,活动策划,规划推广,全内容完整套用告别加班...
  10. P3564 [POI2014]BAR-Salad Bar(ST表 + 二分)
  11. 在Word中如何实现后退?
  12. mysql dnslog_渗透技巧:使用dnslog加快盲注速度 · C1imber’s Blog
  13. 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3满分答案...
  14. python全栈开发-Day3 字符串
  15. 锐捷 重启计算机,关于锐捷客户端重安装后要求反覆重启的解决办法
  16. 2021年低压电工考试试卷及低压电工作业模拟考试
  17. linux编译gdal geos,使用nmake编译GDAL+GEOS(傻瓜教程)
  18. 【数据库】数据库错题集(一)
  19. readxmls r语言_R语言批量爬取NCBI基因注释数据
  20. 31岁,追忆似水流年。。。

热门文章

  1. 从入门到放弃,.net构建博客系统(二):依赖注入
  2. MPP 二、Greenplum数据加载
  3. BPM实例方案分享:表单子表自动填入数据
  4. 一个设计元素很多的网站
  5. PHP+AJAX 投票器功能
  6. abap 生成流水号每天从1开始_条码软件如何制作循环流水号
  7. [python] 常用正则表达式爬取网页信息及分析HTML标签总结
  8. 《每日论文》You Only Look Once: Unified, Real-Time Object Detection
  9. 2018年第九届省赛C/C++A组第2题——星期一
  10. 《算法竞赛入门经典》习题4-2 正方形 (Squares,ACM,ICPC World Finals 1990,UVa201)——仅提供大体方法