关于leetcode中游戏相关的几道题。
来源:互联网 发布:php通用表单管理系统 编辑:程序博客网 时间:2024/06/03 17:29
碰到的第一个题就是九宫格的问题,
Valid Sudoku
determine if a Sudoku is valid, according to: http://sudoku.com.au/TheRules.aspx
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
在横行上只出现1-9的数字,且每个数字只能出现1次,在纵行上也一样。
同时9*9宫格中的9个3*3的子宫格中也只能出现在1-9中,且出现一次。
只要明白了合法九宫格的定义,代码写起来就很清晰了。
先判断横行,在判断总行,再判断那9个子宫格,判断的方法是:使用数组作为hash table. 没出现一个数字,将对应的数组中的元素个数加1,
起始为0,所以合法的九宫格不应该出现有数组元素>1的情况。
/*--------------------------九宫格问题-------------------------------*///By Lingtao 2015/04/21bool isValidSudoku(vector<vector<char> > &board) {int number[9]; //hash tablememset(number, 0, sizeof(number)); //初值全为0//判断横向是否满足。for (int i = 0; i < 9;i++){for (int j = 0; j < 9;j++){if (!isdigit(board[i][j]) && board[i][j] != '.') //判断输入是否合法。这里可能不用判断return false;else if (board[i][j] != '.'){if (++number[board[i][j] - '0' - 1]> 1)return false;}}memset(number, 0, sizeof(number));}//判断纵向。for (int j = 0; j < 9; j++){memset(number, 0, sizeof(number));for (int i = 0; i < 9; i++){if (board[i][j] != '.')if (++number[board[i][j]-'0'-1]> 1)return false;}}//判断sub-九宫。int num[9];memset(num, 0, sizeof(num));for (int i = 0; i < 9; i += 3){for (int j = 0; j < 9; j += 3){for (int k = 0; k < 3; k++){for (int k_j = 0; k_j < 3; k_j++){if (board[i + k][j + k_j] != '.')if (++num[board[i + k][j + k_j] - '0' - 1]>1)return false;}}memset(num, 0, sizeof(num));}}return true;}
2. Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.11
is read off as "two 1s"
or 21
.21
is read off as "one 2
, then one 1"
or 1211
.
的定义。这里的input n表示第n个数的意思,初始的string是"1",所以如果n=1,那么直接输出“1”,如果n=2的时候,那么就要对“1”
进行一个count_and_say也就是"11",等等。
哎,刚开始的时候还以为输入的是一个整形n,然后对n中的这个整形做count_and_say,所以不断的去取每一位的值,然后做int to char的
转换。好吧,题意明确以后,实现还是很简单的。
/******************count and say*********************///很简单就是一道字符串操作的题目//By Lingtao in 2015/4/23string count(string str_n){int count = 1;string result;char last = str_n[0];for (int i = 1; i < str_n.length();i++){if (last == str_n[i])count++;else{result += '0' + count;result += last;last = str_n[i];count = 1;}}result += '0' + count;result += last;return result;}string countAndSay(int n) {if (n < 0)return NULL;string say = "1";for (int i = 1; i < n; i++){say = count(say);}return say;}未完待续
- 关于leetcode中游戏相关的几道题。
- D3D游戏关于窗口中如何精确确定鼠标位置的相关讨论
- 关于leetcode中整形溢出的几道题。
- 关于leetcode中c++ STL 的几道题
- 简评游戏人工智能相关的中文书
- 简评游戏人工智能相关的中文书
- Facebook游戏在服务器端关于SSL的相关配置
- 关于游戏中数组的应用
- 关于游戏中玩家间的互动
- 关于游戏中拦截算法的实现
- opencv中关于直方图的相关函数
- Java中关于时间的相关操作
- struts1中关于ActionForm的相关信息
- opencv中关于直方图的相关函数
- 关于视图的相关小结【收集中】
- Linux中关于环境变量的相关整理
- 关于工程中Portrait的设置相关
- android中关于手机屏幕的相关操作
- android 获取SD卡的图片及其路径
- VS.NET2010水晶报表安装部署[VS2010]
- eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load
- Shell+Linux命令实现日志分析
- List接口简单示例
- 关于leetcode中游戏相关的几道题。
- Java Concurrency的系列文章
- 取字符
- Scrapy入门教程
- Grab Cut学习笔记3
- archlinux 安装有道词典
- GridView中合并单元格
- 使用System.arraycopy()实现数组之间的复制
- 安卓高级编程总结:bitmap内存优化