日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

popStar手机游戏机机对战程序

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 popStar手机游戏机机对战程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DFS算,五分鐘如果答案沒有更新,那個解一般來說就很優了。

?

#include <cstdio>
#include <iostream>
#include <string.h>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#include <map>
#include <stack>
using namespace std;
int const uu[4] = {1,-1,0,0};
int const vv[4] = {0,0,1,-1};
typedef long long ll;
int const inf = 0x3f3f3f3f;
ll const INF = 0x7fffffffffffffffll;
double eps = 1e-10;
double pi = acos(-1.0);
#define rep(i,s,n) for(int i=(s);i<=(n);++i)
#define rep2(i,s,n) for(int i=(s);i>=(n);--i)
#define mem(v,n) memset(v,(n),sizeof(v))
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
struct node{int x,y;
}tempAns[205],Ans[205];char FIRST[101][101];
bool VIS[101][101];
int bestScore;
int STEP;bool check(char mp[101][101],int x,int y){rep(k,0,3){int xx=x+uu[k], yy=y+vv[k];if(xx>=1&&xx<=100 && yy>=1&&yy<=100 && mp[xx][yy]==mp[x][y]) return true;}return false;
}
int color1(char mp[101][101],bool vis[101][101],int x,int y){vis[x][y]=true;int res=1;rep(k,0,3){int xx=x+uu[k], yy=y+vv[k];if(xx>=1&&xx<=100 && yy>=1&&yy<=100 && vis[xx][yy]==false && mp[xx][yy]==mp[x][y]) res+=color1(mp,vis,xx,yy);}mp[x][y]=0;return res;
}
void proc1(char mp[101][101]){rep(j,1,10) rep2(i,9,1){int g=i,h=j;while(g+1<=10 && mp[g+1][h]==0) ++g;mp[g][h]=mp[i][j];if(g!=i) mp[i][j]=0;}rep(j,2,10){if(mp[10][j]==0) continue;int k;for(k=j-1;k>=1;--k) if(mp[10][k]!=0) break;if(k+1<j){rep(i,1,10){mp[i][k+1]=mp[i][j];mp[i][j]=0;}}}
}void print(){char ms[101][101];bool vs[101][101]; mem(vs,false);rep(i,1,10) rep(j,1,10) ms[i][j]=FIRST[i][j];rep(i,1,10){rep(j,1,10)if(Ans[1].x==i&&Ans[1].y==j)printf("#");else{if(ms[i][j]==0)printf(" ");elseprintf("%d",ms[i][j]);}cout<<endl;}rep(i,1,STEP){printf("step%d = (%d,%d)\n",i,Ans[i].x,Ans[i].y); cout<<endl<<endl;color1(ms,vs,Ans[i].x,Ans[i].y);proc1(ms);if(i!=STEP){rep(k,1,10){rep(j,1,10)if(Ans[i+1].x==k&&Ans[i+1].y==j)printf("#");else{if(ms[k][j]==0)printf(" ");elseprintf("%d",ms[k][j]);}cout<<endl;}}}
}//mp[][]:current state   step:current step   score:current score
void dfs(char mp[101][101],bool vis[101][101],int tx,int ty,int step,int score){ //printf("step=%d    score=%d    click on (%d,%d) of last image.\n",step,score,tx,ty);/*rep(i,1,10){rep(j,1,10) if(mp[i][j]!=0) printf("%d ",mp[i][j]); else printf("  ");cout<<endl;}*/tempAns[step].x=tx;tempAns[step].y=ty;rep(i,1,10) rep(j,1,10){if(mp[i][j]==0) continue; //這個位置是空的,跳過if(vis[i][j]) continue; //計算過,跳過if(check(mp,i,j)==false){ //點擊這個位置沒法消去塊vis[i][j]=true;continue;}char temp_mp[101][101];bool temp_vis[101][101]; mem(temp_vis,false);rep(i1,1,10) rep(j1,1,10) temp_mp[i1][j1]=mp[i1][j1];int ts=color1(temp_mp,vis,i,j);proc1(temp_mp);dfs(temp_mp,temp_vis,i,j,step+1,score+5*ts*ts);}if(score>bestScore){STEP=step;rep(i,0,step) Ans[i]=tempAns[i];bestScore=score;cout<<"bestScore = "<<bestScore<<endl;//print();rep(i,1,step) printf("step%d = (%d,%d)\n",i,Ans[i].x,Ans[i].y); cout<<endl<<endl;}
}void read(){rep(i,0,10) rep(j,0,10) FIRST[i][j]=-1;freopen("c:\\hello.in","r",stdin);rep(i,1,10) rep(j,1,10) scanf("%d",&FIRST[i][j]);fclose(stdin);
}
void init(){bestScore=0;mem(VIS,false);
}
int main(){read();init();dfs(FIRST,VIS,-1,-1,0,0);
}

?

轉載于:https://www.cnblogs.com/fish7/p/4068750.html

總結

以上是生活随笔為你收集整理的popStar手机游戏机机对战程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。