C***U 发帖数: 2406 | 1 我在网上judge large的时候有几个例子出错了 错误的比率很小
我把例子拷贝到我自己机器上答案是对的
不知道为什么
这个是我的code 用recursive写的
bool existHelper(vector > &board, vector > &
indicator, int row, int column, string word, int index){
if(index == word.size()) {
return true;
}
if(row < 0 || row >= board.size() || column < 0 || column >= board[0].
size()) {
return false;
}
if(indicator[row][column]){
return false;
}
if(board[row][column] != word[index]) {
return false;
}
indicator[row][column] = true;
bool up, down, left, right;
up = existHelper(board, indicator, row - 1, column, word,index + 1);
down = existHelper(board, indicator, row + 1, column, word,index + 1);
left = existHelper(board, indicator, row, column - 1, word,index + 1);
right = existHelper(board, indicator, row, column + 1, word,index + 1);
indicator[row][column] = false;
return (up || down || left || right);
}
bool exist(vector > &board, string word) {
vector > indicator;
for(int i = 0; i < board.size(); i++) {
vector temp;
for(int j = 0; j < board[0].size(); j++) {
temp.push_back(false);
}
indicator.push_back(temp);
}
bool result = false;
for(int i = 0; i < board.size(); i++) {
for(int j = 0; j < board[0].size(); j++) {
result = result || existHelper(board, indicator, i, j, word, 0);
}
}
return result;
} | C***U 发帖数: 2406 | 2 我修改了一点点 这个全部通过了
但是我觉得这两个code没区别啊
bool existHelper(vector > &board, vector > &
indicator, int row, int column, string word, int index){
bool result;
if(index == word.size()) {
return true;
}
if(row < 0
|| row >= board.size()
|| column < 0
|| column >= board[0].size()
|| indicator[row][column]
|| board[row][column] != word[index])
{
return false;
}
indicator[row][column] = true;
bool up, down, left, right;
up = existHelper(board, indicator, row - 1, column, word, index + 1);
down = existHelper(board, indicator, row + 1, column, word, index +
1);
left = existHelper(board, indicator, row, column - 1, word, index +
1);
right = existHelper(board, indicator, row, column + 1, word, index +
1);
result = up || down || left || right;
if(result) {
return true;
}
else {
indicator[row][column] = false;
return false;
}
}
bool exist(vector > &board, string word) {
vector > indicator;
for(int i = 0; i < board.size(); i++) {
vector temp;
for(int j = 0; j < board[0].size(); j++) {
temp.push_back(false);
}
indicator.push_back(temp);
}
for(int i = 0; i < board.size(); i++) {
for(int j = 0; j < board[0].size(); j++) {
if(existHelper(board, indicator, i, j, word, 0)) {
return true;
}
}
}
return false;
}
【在 C***U 的大作中提到】 : 我在网上judge large的时候有几个例子出错了 错误的比率很小 : 我把例子拷贝到我自己机器上答案是对的 : 不知道为什么 : 这个是我的code 用recursive写的 : bool existHelper(vector > &board, vector > & : indicator, int row, int column, string word, int index){ : if(index == word.size()) { : return true; : } : if(row < 0 || row >= board.size() || column < 0 || column >= board[0].
|
|