问题描述:输入是由一些字母和单词构成的二维数组,目标是找出字谜中的单词,这些单词可以是水平、垂直或沿对角线以任何方向放置。找出二维数组中所有的单词
写完这个程序,手都要断掉了,太TM麻烦了,而且效率很低,到底有多少个for循环,自己都数不清。
//1.2编写一个程序求解字谜游戏问题
#include <iostream>
using namespace std;
/**
directions:
1------从左到右
2------从右到左
3------从上到下
4------从下到上
5------从左下到右上
6------从左上到右下
7------从右下到左上
8------从右上到左下
*/
int compare(char *word1,char *word2){
int index1=0,index2=0;
while(word1[index1]&&word2[index2]){
if(word1[index1]<word2[index2])
return 0;
else if(word1[index1]>word2[index2])
return 1;
index1++;
index2++;
}
if(word1[index1])
return 1;
else
return 0;
}
//对字典进行排序,冒泡法
void sort(char **direc,int m){
int i,j;
char* word1;
char* word2;
for(i = m;i>0;i--){
for(j = 0;j<i-1;j++){
word1 = direc[j];
word2 = direc[j+1];
if(compare(word1,word2)){
//word1>word2
direc[j] = word2;
direc[j+1] = word1;
}
}
}
}
char **findOne(char **puzzle,int row,int col,int n,char **direct,int m,int index,int *returnSize){
char **res = (char **)malloc(sizeof(char*)*m);
int count = 0;
int dir;
int i;
char head = puzzle[row][col];
int tmpRow,tmpCol;
int directIndex;
for(dir = 1;dir<=8;dir++){
directIndex = 0;
tmpRow = row;
tmpCol &#