搜索
文章平均质量分 74
ACLJW
这个作者很懒,什么都没留下…
展开
-
抽签问题
试题描述你的朋友提议玩一个游戏:将写有数字的n 个纸片放入口袋中,你可以从口袋中抽取4 次纸片,每次记下纸片上的数字后都将其放回口袋中。如果这4 个数字的和是m,就是你赢,否则就是你的朋友赢。你挑战了好几回,结果一次也没赢过,于是怒而撕破口袋,取出所有纸片,检查自己是否真的有赢的可能性。请你编写一个程序,判断当纸片上所写的数字是k1,k2, …, kn 时,是否存在抽取4 次和为m 的方案。输入第...原创 2018-03-14 22:35:24 · 414 阅读 · 0 评论 -
208:Firetruck
Firetruck 回溯即可,不过要注意先判断是否可以到达着火点,如果到不了那就没必要回溯了,可能给的数据比较坑,到不了的数据比较多,不判断的话会超时。还有就是输出的格式和样例给的竟然不一样,真是醉了。 #include<bits/stdc++.h> using namespace std; const int maxn = 25; int t, n, cnt2; int vis...原创 2018-12-11 17:09:21 · 180 阅读 · 0 评论 -
211:The Domino Effect
The Domino Effect 回溯加剪枝。只需DFS右、下两个方向即可,可以一行一行来。弄完一行之后看下该行所有数字是否都配对了,否则剪枝。还是得细心,两个 cnt 认错了找了大半天 bug 。。。 #include<bits/stdc++.h> using namespace std; const int n = 7; int cnt; int dx[] = {1, 0}...原创 2018-12-16 23:41:35 · 289 阅读 · 0 评论 -
225:Golygons
Golygons 回溯加剪枝。某个方向可走的条件是此方向上没有障碍物挡道,还有一点容易被忽视的就是不能落到之前到过的点上!!!最重要的剪枝就是每走一步就判断一下剩下的步数是否有可能回到原点,还有就是如果提前到达原点也要剪掉。 #include<bits/stdc++.h> using namespace std; const int maxn = 50 + 5; int T, n...原创 2018-12-13 23:34:23 · 140 阅读 · 0 评论 -
10603:Fill
Fill #include<bits/stdc++.h> using namespace std; const int maxn = 200 + 5; int T, a, b, c, d; struct node{ int v[3], dist; bool operator < (const node& rhs) const{ retu...原创 2018-12-03 23:32:32 · 167 阅读 · 0 评论 -
1601:The Morning after Halloween(经典)
The Morning after Halloween 直接BFS会超时,题目中提示过墙壁很多,那么可以将所有的空格提取出来做张图,然后记录每个空格周围的邻居,这样就不用每次都判断能不能走了。优化的话可以使用双向BFS,从每次正向(从开始位置搜索)搜索一次,反向(从目标位置搜索)搜索一次,如果有相同状态则找到最短路径。 BFS(800ms): #include<bits/stdc++...原创 2018-12-05 22:26:49 · 388 阅读 · 0 评论 -
572:Oil Deposits
Oil Deposits#include<bits/stdc++.h> using namespace std; const int maxn = 100 + 5; int m,n,cnt; char graph[maxn][maxn]; void dfs(int x,int y){ graph[x][y] = '*'; for(int dx = -1;dx <=...原创 2018-06-01 12:58:50 · 135 阅读 · 0 评论 -
1103:Ancient Messages
Ancient Messages数一数就能发现,题目表中的6个符号从左到右依次有1,3,5,4,0,2个洞,各不相同。这样,只需要数一数输入的符号有几个“白洞”,就能准确地知道它是哪个符号了。至于具体实现,我的思路是:先确定一个符号,找到该符号的空洞个数然后将该符号“擦除”,继续确定下一个符号。具体而言,每次找到一个黑点,然后DFS,如果其周围点为黑点则递归,若为白点且为封闭块则个数加1,最后再次...原创 2018-06-02 23:52:41 · 379 阅读 · 0 评论 -
220:Othello
Othello我的这道题的代码还是比较简洁的哈哈。version 1:#include<cstdio> #include<cstring> using namespace std; int n,wn,bn; int dxs[3] = {0,1,-1}; int dys[3] = {0,1,-1}; char c,gamer,cmd[5],game[9][9]; char r...原创 2018-04-13 13:30:19 · 162 阅读 · 0 评论 -
迷宫的最短路径
给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)(N,M<=100)样例输入:10 10样例输出:22#include<cstdio> #include<iostream> #include<queue> u...原创 2018-03-16 17:46:21 · 1950 阅读 · 0 评论 -
2386:Lake Counting
总时间限制: 1000ms内存限制: 65536kB描述Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squa...原创 2018-03-15 00:46:15 · 175 阅读 · 0 评论 -
部分和问题
部分和问题时间限制:1000 ms | 内存限制:65535 KB难度:2描述给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。输入首先,n和k,n表示数的个数,k表示数的和。接着一行n个数。(1<=n<=20,保证不超int范围)输出如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”样例输入4 13 1...原创 2018-03-14 23:17:30 · 160 阅读 · 0 评论 -
12113:Overlapping Squares
Overlapping Squares 我的思路:可以根据所给图形计算出图形中包含的方块的个数以及它们各自的位置,方块可以根据某一个角点的位置来确定,具体方法见 count() 函数。方块确定之后,图形的各种变化就取决于方块们的不同放置顺序了,枚举所有排列,进行模拟,看看模拟结果里面有没有所给图形即可。 思路没什么问题,代码了检查了好多遍,但是一直WA,暂时还没发现问题,再想想吧。 #in...原创 2018-12-29 15:48:37 · 259 阅读 · 0 评论