Weiss-(DSAA - in C,1.3)字谜游戏
来源:互联网 发布:淘宝子账号怎么申请 编辑:程序博客网 时间:2024/06/10 01:49
1.3 编写程序求解字谜游戏问题
/* 原理:由于字谜游戏,需要从不同方向组合,所以本程序大致上分了3个方向: 1.纵向 -- (含逆向和顺序) 2.横向 -- (同上) 3.对角 -- (左上,右上,左下,右下) 用循环厉遍字谜表中每一个元素,再对每个元素进行各个方向的匹配,找出正确的单词组合。 注意:注释中的 “方向1”为 左上 “方向3”为 右上 “方向2”为 右下 “方向4”为 左下采用直观的方法描述,由于是做习题,所以没有参考网上的答案。*/
#include <iostream>#include <string>using namespace std;string answer[5] = {"two","log","that","dog","odd"};size_t counter = 0;size_t total = sizeof(answer)/sizeof(string);void check(string vs){ for(int i=0;i<total;i++) { if (vs == answer[i]) { counter++; //cout<<"test:"<<vs<<endl; } }}int main(){ //字谜表 char guess[4][4] = {{'l','g','i','t'}, {'t','o','d','a'}, {'w','d','g','h'}, {'o','g','d','t'},}; string str1 = "",str2 = "",str3 = ""; for (int i=0;i<=3;i++) { for (int j=0;j<=3;j++) { //--------------------------横向顺序-------------------------- for (int k=j;k<=3;k++) { str1 += guess[i][k]; check(str1); } //--------------------------横向逆序-------------------------- if (j!=0) { string str1_1 = ""; for (int k=j;k>=0;k--) { str1_1 += guess[i][k]; check(str1_1); } } str1 = ""; //--------------------------纵向顺序-------------------------- for (int k=j;k<=3;k++) { str2 += guess[k][i]; check(str2); } //--------------------------纵向逆序-------------------------- if(i!=0) { string str2_2 = ""; for (int k=i;k>=0;k--) { str2_2 += guess[k][j]; check(str2_2); } } str2 = ""; //---------------------------对角--------------------------- int indexI = 0,indexJ = 0; //no problem!! 方向1 if(!(i==0||j==0)) { indexI = i; indexJ = j; int d = (i<j?i:j); if (i==j) d = i; for (int k=d;k>=0;k--) { str3 += guess[indexI--][indexJ--]; check(str3); } str3 = ""; } //done bug方向2 if(!(j==3||i==3)) { indexI = i; indexJ = j; int d = i<j? j:i;//决定第三层循环的次数 for (int k=0;k<=3-d;k++) { str3 += guess[indexI++][indexJ++]; check(str3); } str3 = ""; } //done bug.方向3 if (!(i==0 || j==3)) { indexI = i; indexJ = j; int d; if (i==1) d = i; else if (i==2) { if (j==0||j==1) d = 2; else d = 1; } else if (i==3) d = i-j; for (int k=0;k<=d;k++) { str3 += guess[indexI--][indexJ++]; check(str3); } str3 = ""; } //方向4 //done bug if (!(i==3 || j==0)) { indexI = i; indexJ = j; int d; if (i==0) d = j; else if (i==1) { if (j==1) d = 1; else d = 2; } else if (i==2) d = 1; for (int k=0;k<=d;k++) { str3 += guess[indexI++][indexJ--]; check(str3); } str3 = ""; } } } cout<<"total number:"<<counter; return 0;}
0 0
- Weiss-(DSAA - in C,1.3)字谜游戏
- Weiss-(DSAA - in C,2.10)Horner法则求多项式
- Weiss-(DSAA - in C,2.12)最大连续子序列乘积
- Weiss-(DSAA - in C,2.12)最大子序列求和
- Weiss-(DSAA - in C,2.13)求素数的3个方法
- Weiss-(DSAA - in C,2.9/2.16)快速求幂(递归与非递归)
- Weiss-(DSAA - in C,2.19) 大小为N的数组A,其主要元素出现次数超过N/2
- 字谜游戏(a)C语言
- 字谜游戏(b)C语言
- C语言猜字谜游戏
- 猜字谜游戏
- 求解字谜游戏问题
- 猜字谜游戏
- 《数据结构算法分析C描述》引论:选择问题,字谜游戏问题
- 《数据结构算法分析C描述》引论:选择问题,字谜游戏问题
- 数字谜1 C实现
- 数字谜2 C实现
- 字谜
- mysql自动插入时间戳
- ImageView中的ScaleType属性
- mysql表MyIAS、InnoDB类型大数据速度测试
- golang 安装常用工具
- Java 关键字this详解
- Weiss-(DSAA - in C,1.3)字谜游戏
- 为什么你开发的项目要花这么长时间?
- QT的信号/槽机制
- 深入理解Android(一):Gradle详解
- iframe 自适应
- Codeforces Round Intel Code Challenge Final Round A.Checking the Calendar
- SQL注入攻击入门
- Yii正则验证
- 从0开始学习 GITHUB 系列之「加入 GITHUB」