【数据结构与算法分析1.2】编写一个程序求解字谜游戏问题

问题描述:输入是由一些字母和单词构成的二维数组,目标是找出字谜中的单词,这些单词可以是水平、垂直或沿对角线以任何方向放置。找出二维数组中所有的单词

写完这个程序,手都要断掉了,太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 &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值