最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)連連看消除算法

 更新時(shí)間:2019年01月03日 16:04:15   作者:求索路途  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)連連看消除算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

C++連連看消除代碼的實(shí)現(xiàn),過(guò)程比較復(fù)雜。

#include<iostream>
#include<vector>
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<m;i++)
 {
 store_num[i]=new int[n];
 }
 for(int i=0;i<m;i++)
 {
 for(int j=0;j<n;j++)
 {
 store_num[i][j]=0;
 }
 }
 for(int i=0;i<t;i++)
 {
 t_pos[i]=new int[4];
 }
 for(int i=0;i<t;i++)
 {
 for(int j=0;j<4;j++)
 {
 t_pos[i][j]=0;
 }
 }
 for(int i=0;i<m;i++)
 {
 for(int j=0;j<n;j++)
 {
 cin>>store_num[i][j];
 }
 }
 for(int i=0;i<t;i++)
 {
 for(int j=0;j<4;j++)
 {
 cin>>t_pos[i][j];
 }
 }
 int score=0;
 for(int i=0;i<t;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<<score<<endl;
 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;
 }
 vector<point>v_point;
 point p_in;
 int **pArray_incre=new int*[rows+2];
 for(int i=0;i<rows+2;i++)
 {
 pArray_incre[i]=new int [cols+2];
 }
 for(int i=0;i<rows+2;i++)
 {
 for(int j=0;j<cols+2;j++)
 {
 pArray_incre[i][j]=0;
 }
 }
 for(int i=1;i<rows+1;i++)
 {
 for(int j=1;j<cols+1;j++)
 {
 pArray_incre[i][j]=(*pArray)[i-1][j-1];
 }
 }
 for(int y=y1+1;y<cols+2;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<y1;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<cols+2;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<y2;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<(int)v_point.size();i++)
 {
 for(int j=0;j<(int)v_point.size();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<rows+2;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<x1;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<rows+2;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<x2;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<(int)v_point.size();i++)
 {
 for(int j=0;j<(int)v_point.size();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;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解C++中隱含的this指針

    一文詳解C++中隱含的this指針

    這篇文章主要帶大家詳細(xì)了解一下C++中隱含的this指針,文中通過(guò)代碼示例和圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • C++?命名空間?using聲明使用示例詳解

    C++?命名空間?using聲明使用示例詳解

    這篇文章主要為大家介紹了C++?命名空間?using聲明使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 使用C++進(jìn)行Cocos2d-x游戲開(kāi)發(fā)入門過(guò)程中的要點(diǎn)解析

    使用C++進(jìn)行Cocos2d-x游戲開(kāi)發(fā)入門過(guò)程中的要點(diǎn)解析

    這篇文章主要介紹了使用C++進(jìn)行Cocos2d-x游戲開(kāi)發(fā)入門過(guò)程中的要點(diǎn)解析,主要針對(duì)畫面變化以及觸摸響應(yīng)方面,需要的朋友可以參考下
    2015-12-12
  • C++中std::vector的具體使用

    C++中std::vector的具體使用

    C++標(biāo)準(zhǔn)庫(kù)中的std::vector是一種動(dòng)態(tài)數(shù)組容器,適用于算法競(jìng)賽中的動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)、數(shù)組擴(kuò)展和模擬棧/二維數(shù)組等場(chǎng)景,本文就來(lái)介紹一下,感興趣的可以了解一下
    2025-02-02
  • 解析C語(yǔ)言中位字段內(nèi)存分配的問(wèn)題

    解析C語(yǔ)言中位字段內(nèi)存分配的問(wèn)題

    本篇文章是對(duì)C語(yǔ)言中位字段內(nèi)存分配的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中的Qt?QTableView詳解

    C++中的Qt?QTableView詳解

    這篇文章主要介紹了Qt?QTableView詳解,主要包括常用接口,設(shè)置item屬性,右鍵彈出菜單,結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C語(yǔ)言的進(jìn)制轉(zhuǎn)換及算法實(shí)現(xiàn)教程

    C語(yǔ)言的進(jìn)制轉(zhuǎn)換及算法實(shí)現(xiàn)教程

    這篇文章主要介紹了C語(yǔ)言的進(jìn)制轉(zhuǎn)換及算法實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Qt兩種定時(shí)器使用實(shí)現(xiàn)方式

    Qt兩種定時(shí)器使用實(shí)現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于Qt兩種定時(shí)器使用實(shí)現(xiàn)方式的相關(guān)資料,Qt中的定時(shí)器類是QTimer,QTimer不是一個(gè)可見(jiàn)的界面組件,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • C語(yǔ)言中#if的使用詳解

    C語(yǔ)言中#if的使用詳解

    #if和#endif是一組同時(shí)使用的,叫做條件編譯指令。#if與#define、#include等指令一樣是由預(yù)處理器這個(gè)強(qiáng)大的工具處理的,預(yù)處理器可以在編譯前處理c程序,這篇文章主要介紹了C語(yǔ)言中#if的使用,需要的朋友可以參考下
    2022-11-11
  • 詳解C++純虛函數(shù)與抽象類

    詳解C++純虛函數(shù)與抽象類

    這篇文章主要介紹了C++純虛函數(shù)與抽象類的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

滦平县| 大城县| 新沂市| 和静县| 筠连县| 湘潭县| 山西省| 白河县| 安仁县| 庆安县| 民丰县| 三都| 嵊泗县| 曲麻莱县| 原阳县| 新邵县| 泊头市| 重庆市| 华宁县| 吴忠市| 江都市| 巴彦县| 呼伦贝尔市| 谷城县| 滁州市| 稻城县| 大渡口区| 金堂县| 静海县| 乐至县| 红安县| 昭通市| 宝清县| 石城县| 唐海县| 仁化县| 和硕县| 突泉县| 韶关市| 蒙自县| 玉树县|