C++连连看消除代码的实现,过程比较复杂。

#include

#include

using namespace std;

bool CheckRemove(int x1,int y1,int x2,int y2,int rows,int cols,int ***pArray);

void Swap(int &a,int &b);

typedef struct

{

int x;

int y;

}point;

int main()

{

int Num=0;

while(Num<=15)

{

int m,n,t;

cin>>m>>n>>t;

int **store_num=new int*[m];

int **t_pos=new int*[t];

for(int i=0;i

{

store_num[i]=new int[n];

}

for(int i=0;i

{

for(int j=0;j

{

store_num[i][j]=0;

}

}

for(int i=0;i

{

t_pos[i]=new int[4];

}

for(int i=0;i

{

for(int j=0;j<4;j++)

{

t_pos[i][j]=0;

}

}

for(int i=0;i

{

for(int j=0;j

{

cin>>store_num[i][j];

}

}

for(int i=0;i

{

for(int j=0;j<4;j++)

{

cin>>t_pos[i][j];

}

}

int score=0;

for(int i=0;i

{

if(CheckRemove(t_pos[i][0],t_pos[i][1],t_pos[i][2],t_pos[i][3],m,n,&store_num))

{

score++;

}

}

cout<

Num++;

}

return 0;

}

bool CheckRemove(int x1,int y1,int x2,int y2,int rows,int cols,int ***pArray)

{

int m1=x1-1;int n1=y1-1;

int m2=x2-1;int n2=y2-1;

if((*pArray)[m1][n1]!=(*pArray)[m2][n2])

{

return false;

}

if(m1==m2&&(m1==0||m1==rows-1))

{

(*pArray)[m1][n1]=0;

(*pArray)[m2][n2]=0;

return true;

}

if(n1==n2&&(n1==0||n1==cols-1))

{

(*pArray)[m1][n1]=0;

(*pArray)[m2][n2]=0;

return true;

}

vectorv_point;

point p_in;

int **pArray_incre=new int*[rows+2];

for(int i=0;i

{

pArray_incre[i]=new int [cols+2];

}

for(int i=0;i

{

for(int j=0;j

{

pArray_incre[i][j]=0;

}

}

for(int i=1;i

{

for(int j=1;j

{

pArray_incre[i][j]=(*pArray)[i-1][j-1];

}

}

for(int y=y1+1;y

{

if(pArray_incre[x1][y]!=0)

{

break;

}

p_in.x=x1;

p_in.y=y;

v_point.push_back(p_in);

}

for(int y=0;y

{

if(pArray_incre[x1][y]!=0)

{

break;

}

p_in.x=x1;

p_in.y=y;

v_point.push_back(p_in);

}

for(int y=y2+1;y

{

if(pArray_incre[x2][y]!=0)

{

break;

}

p_in.x=x2;

p_in.y=y;

v_point.push_back(p_in);

}

for(int y=0;y

{

if(pArray_incre[x2][y]!=0)

{

break;

}

p_in.x=x2;

p_in.y=y;

v_point.push_back(p_in);

}

for(int i=0;i

{

for(int j=0;j

{

if(j!=i)

{

if(v_point[i].y==v_point[j].y)

{

int yy=v_point[i].y;

int xx1=v_point[i].x;

int xx2=v_point[j].x;

if(xx1>xx2)

Swap(xx1,xx2);

int num=xx2-xx1+1;

int count=0;

for(int h=xx1;h<=xx2;h++)

{

if(pArray_incre[h][yy]==0)

{

count++;

}

}

if(count==num)

{

(*pArray)[x1-1][y1-1]=0;

(*pArray)[x2-1][y2-1]=0;

v_point.empty();

return true;

}

}

}

}

}

v_point.empty();

for(int x=x1+1;x

{

if(pArray_incre[x][y1]!=0)

{

break;

}

p_in.x=x;

p_in.y=y1;

v_point.push_back(p_in);

}

for(int x=0;x

{

if(pArray_incre[x][y1]!=0)

{

break;

}

p_in.x=x;

p_in.y=y1;

v_point.push_back(p_in);

}

for(int x=x2+1;x

{

if(pArray_incre[x][y2]!=0)

{

break;

}

p_in.x=x;

p_in.y=y2;

v_point.push_back(p_in);

}

for(int x=0;x

{

if(pArray_incre[x][y2]!=0)

{

break;

}

p_in.x=x;

p_in.y=y2;

v_point.push_back(p_in);

}

for(int i=0;i

{

for(int j=0;j

{

if(j!=i)

{

if(v_point[i].x==v_point[j].x)

{

int xx=v_point[i].x;

int yy1=v_point[i].y;

int yy2=v_point[j].y;

if(yy1>yy2)

Swap(yy1,yy2);

int num=yy2-yy1+1;

int count=0;

for(int h=yy1;h<=yy2;h++)

{

if(pArray_incre[xx][h]==0)

{

count++;

}

}

if(count==num)

{

(*pArray)[x1-1][y1-1]=0;

(*pArray)[x2-1][y2-1]=0;

v_point.empty();

return true;

}

}

}

}

}

return false;

}

void Swap(int &a,int &b)

{

int tmp;

tmp=a;

a=b;

b=tmp;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

c语言连连看算法,C++实现连连看消除算法相关推荐

  1. ML作业2—候选消除算法

    数据集: 候选消除算法流程: 候选消除算法优于find_s算法,能够表示与训练样例一致的所有假设,下为该算法实现的伪代码: 将G集合初始化为H中极大一般假设 将S集合初始化为H中极大特殊假设 对每个训 ...

  2. C语言回音消除算法,一种语音识别场景中回音消除的方法

    主权项: 1.一种语音识别场景中回音消除的方法,其特征在于:该方法在硬件方面的预置条件为:音频输入为两个数字麦克,在物理电路上,连接数字麦克1,不连接数字麦克2,即数字麦克2虚焊,不连接真实的数字麦克 ...

  3. c语言写的数据挖掘的层次聚类算法(新手版)

    自己写的c语言写的数据挖掘的层次聚类算法,只用于学习交流,请勿转载!!!! # include<stdio.h> # include<math.h> main(){ int n ...

  4. c语言编程图像拼接,一种基于Lucas-Kanade算法的图像配准和拼接方法

    一种基于Lucas-Kanade算法的图像配准和拼接方法 [技术领域] [0001 ]本发明涉及图像处理技术领域,具体涉及一种基于Lucas-Kanade算法的图像配准 和拼接方法. [背景技术] [ ...

  5. 计算c53的c语言的程序,C程序设计的常用算法.doc

    ? HYPERLINK "/happy_dreamer/blog/item/902dbe2af96b2a25d52af16b.html" \o "C程序设计的常用算法&q ...

  6. ML之RF:利用Js语言设计随机森林算法【DT之CART算法(gain index)】并应用随机森林算法

    ML之RF:利用Js语言设计随机森林算法[DT之CART算法(gain index)]&并应用随机森林算法 目录 输出结果 设计思路 代码实现(部分代码) 输出结果 设计思路 代码实现(部分代 ...

  7. Algorithm:C++语言实现之内排序、外排序相关算法(插入排序 、锦标赛排序、归并排序)

    Algorithm:C++语言实现之内排序.外排序相关算法(插入排序 .锦标赛排序.归并排序) 目录 一.内排序 1.插入排序 2.锦标赛排序 3.归并排序 二.外排序 1.过程 一.内排序 1.插入 ...

  8. C语言打印链表的中间节点的算法(附完整源码)

    C语言打印链表的中间节点的算法 C语言打印链表的中间节点的算法完整源码(定义,实现,main函数测试) C语言打印链表的中间节点的算法完整源码(定义,实现,main函数测试) #include < ...

  9. C语言链表返回具有的回文序列的算法(附完整源码)

    C语言链表返回具有的回文序列的算法 C语言链表返回具有的回文序列的算法完整源码(定义,实现,main函数测试) C语言链表返回具有的回文序列的算法完整源码(定义,实现,main函数测试) #inclu ...

  10. C语言链表是否为循环表的算法(附完整源码)

    C语言链表是否为循环表的算法 C语言链表是否为循环表的算法完整源码(定义,实现,main函数测试) C语言链表是否为循环表的算法完整源码(定义,实现,main函数测试) #include <io ...

最新文章

  1. Datawhale组队学习 Task01:数组(1天)
  2. CCNP交换实验(3) -- STP
  3. 第一个小项目 - 去掉指定文件中的注释
  4. kubernetes组件介绍
  5. 【Spring学习】Spring简介
  6. C语言函数返回1和返回0究竟哪个好?
  7. mysql查找表shoe table,mysql命令行常用命令
  8. 拦截导弹(信息学奥赛一本通-T1289)
  9. golang中的variable和data types
  10. Mysql的my.cnf配置文件详情
  11. redis同步到磁盘
  12. 【Ubuntu16.04】解决Qt安装包(.run文件)不能用./命令执行的问题
  13. 【FastDFS-V5.11】Linux下FastDFS+Nginx实现分布式图片服务器搭建详细教程(单机模式)
  14. c#中调用window的 wmi服务获取本机usb信息
  15. twitter注册不了_如何阻止Twitter重点阻止不相关的通知
  16. 考研政治|马克思主义基本原理
  17. 多线程设计模式——Master-Salave(主仆)模式
  18. 海外众筹:kickstarter众筹创建成功项目分享
  19. Leetcode #765 情侣牵手(贪心算法)
  20. ToDesk-----个人免费 极致流畅的远程协助软件

热门文章

  1. NetApp Ontap初始化配置详解
  2. 图像插值算法——双立方(三次)卷积插值
  3. 信息系统项目管理师备考经验分享
  4. 全球与中国光纤输出半导体激光器市场现状及未来发展趋势
  5. unity面试n问总结
  6. 甲骨文所见商代官职表
  7. PADS VX2.8 router亮显模式的设置方法
  8. 内功修炼《函数栈帧的创建和销毁》建议收藏
  9. 睡前1分钟惊人学习法心得体会
  10. 算法-阶乘尾数零的个数