8.29字节跳动笔试

五子棋完全没有思路啊,,有大佬可以指点迷津吗😂😂#字节跳动#
全部评论
4个方向都判断会暴栈 我两两组合过了60..
1 回复 分享
发布于 2021-08-29 12:01
一题没做出来,第一题过了20,第二题过了60,第三题过了80
1 回复 分享
发布于 2021-08-29 12:03
直接暴力,遍历每一个为0的点,判断在这个点下棋子 会不会五子连线,连线情况共4*5=20种,手敲20个if就行了
1 回复 分享
发布于 2021-08-29 12:03
不能只判断单一方向,判断每个点的两个相反方向(左右,上下),统计两个相反方向的count和即可。单一方向的话不能判断001101100这种
1 回复 分享
发布于 2021-08-29 11:56
我就每个点都都判断一下左右上下斜方向有没有5个1。但是只过了80
点赞 回复 分享
发布于 2021-08-29 11:50
过了60
点赞 回复 分享
发布于 2021-08-29 12:01
对每一个点进行dfs,当前点记录为1直接返回false,为0则进行搜索。四种搜索方式(1)左右横向搜索(2)上下纵向搜(3)左上右下斜搜(4)左下右上斜搜。搜索过程就是统计1的个数,碰0则立即停止搜索,1的个数大于等于4就说明是可以凑到的五子的,返回true。
点赞 回复 分享
发布于 2021-08-29 12:01
从右上角开始判断每个点,然后只要判断向右,向下,向右下三个方向。 最后在把结果按照行列排序就可以了
点赞 回复 分享
发布于 2021-08-29 12:01
暴力ac,左上加右下,右上加左下,左加右,上加下等于4并且当前等于0,加到答案集合中
点赞 回复 分享
发布于 2021-08-29 12:02
过了60的可能是没有排序🤣
点赞 回复 分享
发布于 2021-08-29 12:02
我感觉不需要dfs,他题目说是一定能连上,我直接记录4个白子的坐标,然后判断四个白子是连上了还是断开,如果连上了就往两头加白子(这里判断一下有没有撞边界),如果中间断开了就把最后一个白子点在中间断开的位置。 我这样写也没有记录棋盘,只要记录四个白子的坐标,然后通过白子坐标直接判断是横着摆的还是竖着,或是斜着。 但是我没写完,一直显示段错误……😅
点赞 回复 分享
发布于 2021-08-29 13:32
不要深搜,直接每个位置判断上下左右斜就行了,N<=10,复杂度不会高,纯代码量大一点的题
点赞 回复 分享
发布于 2021-08-29 16:51
package Com.gg; import java.util.*; public class Glass { public static void main(String[] args) { int n = 6; int[][] arr = new int[][] { {0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1}, {1, 1, 0, 1, 1, 0}, {0, 1, 1, 0, 0, 1}, {0, 1, 0, 0, 0, 1}, {0, 1, 0, 1, 0, 1} }; int[][] res = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j < n - 4 && arr[i][j + 4] + arr[i][j + 3] + arr[i][j] + arr[i][j + 1] + arr[i][j + 2] == 4) { for (int k = j; k < j + 5; k++) { if (arr[i][k] == 0) { res[i][k] = 1; } } } if (i < n - 4 && arr[i][j] + arr[i + 1][j] + arr[i + 2][j] + arr[i + 3][j] + arr[i + 4][j] == 4) { for (int k = i; k < i + 5; k++) { if (arr[k][j] == 0) { res[k][j] = 1; } } } if (i < n - 5 && j < n - 5 && arr[i][j] + arr[i + 1][j + 1] + arr[i + 2][j + 2] + arr[i + 3][j + 3] + arr[i + 4][j + 4] == 4) { for (int k = 0; k < 4; k++) { if (arr[i + k][j + k] == 0) { res[i + k][j + k] = 1; } } } if (i < n - 5 && j > 3 && arr[i][j] + arr[i + 1][j - 1] + arr[i + 2][j - 2] + arr[i + 3][j - 3] + arr[i + 4][j - 4] == 4) { for (int k = 0; k < 4; k++) { if (arr[i + k][j - k] == 0) { res[i + k][j - k] = 1; } } } } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (res[i][j] == 1) { System.out.println(i + " " + j); } } } } }
点赞 回复 分享
发布于 2021-08-31 05:23

相关推荐

02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
头像
02-26 13:58
门头沟学院 Java
北城_阿亮:把八股背一背,包装一下实习经历项目经历,要是有心思考证就考一考,然后把别人的项目爬到自己github上,包装到简历里,什么三个月?一个月!
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务