【网易2017春招】涂棋盘 解题报告
2017-03-29 22:58
706 查看
【网易2017春招】涂棋盘 解题报告
标签(空格分隔): 牛客网题目地址:https://www.nowcoder.com/questionTerminal/79ed2f61eef7448aab10ef9677382e7e?orderByHotValue=0&questionTypes=000100&page=1&onlyReference=false
题目描述:
小易有一块n*n的棋盘,棋盘的每一个格子都为黑色或者白色,小易现在要用他喜欢的红色去涂画棋盘。小易会找出棋盘中某一列中拥有相同颜色的最大的区域去涂画,帮助小易算算他会涂画多少个棋格。输入:
输入数据包括n+1行:第一行为一个整数n(1 ≤ n ≤ 50),即棋盘的大小
接下来的n行每行一个字符串表示第i行棋盘的颜色,’W’表示白色,’B’表示黑色
输出:
输出小易会涂画的区域大小样例输入:
3 BWW BBB BWB
样例输出:
3
Ways
这个题我提交了很多次。错误的原因是想着总想统计每一列的出现的W和B的次数,这样有点鸡肋,而且麻烦。新方法就是只用一个col输出保存每列的出现的最大连续字符的次数即可,也就是动态规划。
三重循环,第一重是对列,第二重是对行,第三重是对以后的行。这样即可保证对于列的每行的某个元素都会遍历到以后的出现的连续次数,保存最大连续次数。
当第三重循环里面的判断条件即当前测试值和判断值不同时,注意判断下是否满足DP的条件,另外吧两个统计用的变量归位。因为count统计的是连续字符数,因此初始值为1.
还出现错误的一个地方就是,如果每列的最后一个元素统计结束时,第三重循环会结束,这样就没有保存的了最后的连续结果。解决方法是在循环结束后,再手动计算一次。
#include <stdio.h> #include <string.h> int main() { int n; while (scanf("%d", &n) != EOF) { char bricks ; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { char temp; scanf("%c", &temp); if (temp == '\n') { scanf("%c", &bricks[i][j]); } else { bricks[i][j] = temp; } } } int col ; memset(col, 0, sizeof(col)); for (int j = 0; j < n; j++) { for (int i = 0; i < n; i++) { char temp = bricks[i][j]; int count = 1; for (int k = i + 1; k < n; k++) { if (bricks[k][j] == temp) { count++; } else { if (col[j] < count) { col[j] = count; } temp = bricks[k][j]; count = 1; } } if (col[j] < count) { col[j] = count; } } } int answer = 0; for (int i = 0; i < n; i++) { if (answer < col[i]) { answer = col[i]; } } printf("%d\n", answer); } return 0; }
Date
2017 年 3 月 29 日相关文章推荐
- 【网易2017春招】消除重复元素 解题报告
- 【网易2017春招】奇怪的表达式求值 解题报告
- 网易2017秋招编程题集合-解题报告
- 【网易2017春招】赶去公司 解题报告
- 【在线笔试题解题报告系列】网易2017校招内推笔试之编程题【持续更新】
- [ZJOI2007]棋盘制作 解题报告(最大连续同色子矩阵)
- CSU-1511 残缺的棋盘 解题报告
- 【解题报告】ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)
- POJ-1321 棋盘问题 解题报告
- 2016网易游戏 游戏研发岗 在线笔试解题报告
- 【在线笔试题解题报告系列】Google APAC 2017 University Test Round B
- 2017 ACM天梯赛 古风排版 解题报告
- 2017湖南省多校第一场解题报告(CSU OJ)
- poj 1321 棋盘问题解题报告
- POJ 2017 解题报告
- 牛客网-网易2017内推笔试编程题合集(二)-解题思路及源码
- 【算法解题报告】棋盘上的距离&校门外的树
- 2017 Multi-University Training 1 解题报告
- codechef November Challenge 2017解题报告
- CODE FESTIVAL 2017 qual B 解题报告