亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? renjuboard.h

?? uct算法
?? H
字號(hào):
#ifndef _RENJU_BOARD_H_#define _RENJU_BOARD_H_#include <math.h>#include "basic_go_types.h"#include "basic_board.h"#include "zobrist.h"#include "nbrcounter.h"template<uint T> class RenjuBoard:public BasicBoard<T, RenjuBoard<T> >,public NbrCounterBoard<T, RenjuBoard<T> >{public:	static const bool use_mercy_rule = true;	using BasicBoard<T, RenjuBoard>::empty_v_cnt;	using BasicBoard<T, RenjuBoard>::color_at;	using BasicBoard<T, RenjuBoard>::board_area;	using BasicBoard<T, RenjuBoard>::empty_v;	using BasicBoard<T, RenjuBoard>::player_v_cnt;	using BasicBoard<T, RenjuBoard>::move_history;	using BasicBoard<T, RenjuBoard>::move_no;	using BasicBoard<T, RenjuBoard>::max_game_length;	using NbrCounterBoard<T, RenjuBoard>::nbr_cnt;	using NbrCounterBoard<T, RenjuBoard>::diag_nbr_cnt;	int                          komi;	//FastMap<Vertex<T>, Vertex<T> >  chain_next_v;	Vertex<T> chain_next_v[4][Vertex<T>::cnt];	uint chain_length[4][Vertex<T>::cnt]; // indexed by chain_id 棋串的長(zhǎng)度	uint chain_id[4][Vertex<T>::cnt]; // 每個(gè)點(diǎn)所屬的4個(gè)方向上的棋串id	FastMap<Vertex<T>, bool>        good_at; // 是否good 	FastMap<Vertex<T>, uint>        good_pos; // good vetex在good_v中的索引	Vertex<T>                       good_v[board_area]; // 棋盤(pán)上的空點(diǎn)	uint                         	good_v_cnt;#undef empty_v_for_each_and_pass  #define empty_v_for_each_and_pass(board, vv, i) {                    \      Vertex<T> vv = Vertex<T>::pass();                                \      i;                                                               \      rep(ev_i, (board)->good_v_cnt) {                                \        vv = (board)->good_v[ev_i];                                  \        i;                                                             \      }                                                                \    }public:                         // board interface	RenjuBoard() {		vertex_for_each_all(v) {			rep(i, 4) {				chain_next_v[i][v] = v;				chain_id[i][v] = v;				chain_length[i][v] = 0;			}			good_at[v] = false;		}		good_v_cnt  = 0;		Vertex<T> v = Vertex<T>::of_coords(T/2,T/2);		good_at[v] = true;		good_pos[v] = good_v_cnt;		good_v[good_v_cnt++] = v;		komi = 0;	}	all_inline 	bool play(Player player, Vertex<T> v) {		check();		if(v == Vertex<T>::pass()) {			basic_play(player, Vertex<T>::pass());			return true;		}		v.check_is_on_board();		assertc(board_ac, color_at[v] == color::empty);		basic_play(player, v);		place_stone(player, v);		rep(i, 4) {			//chain_length[i][chain_id[i][v]] = 1;			chain_length[i][v] = 1;		}		vertex_for_each_8_nbr(v, nbr_v, i, {			if(color_at[nbr_v] == color::from_player(player)) { // same color of groups				assertc(board_ac, chain_id[i][nbr_v] != chain_id[i][v]);				if(chain_id[i][nbr_v] != chain_id[i][v]) {					if(chain_length[i][chain_id[i][v]] > chain_length[i][chain_id[i][nbr_v]]) {						merge_chains(v, nbr_v, i);					} else {						merge_chains(nbr_v, v, i);					}         				}			}		});		if(komi == 0) {			rep(i, 4) {				if(chain_length[i][chain_id[i][v]] >= 5) {					komi = (player == player::black) ? 500 : -500;					break;				}			}		}		return true;	}	int score() const {		return komi;	}	Player winner() const { 		return Player((score() <= 0) + 1); 	}	int approx_score() const {		return komi;	}	Player approx_winner() { return Player((approx_score() <= 0)+1); }	int vertex_score(Vertex<T> v) {		return 0;	}	void set_komi(float fkomi) { 	}	float get_komi() const { 		return komi;	}public: // legality functionsprivate:	void basic_play(Player player, Vertex<T> v) { // Warning: has to be called before place_stone, because of hash storing		BasicBoard<T, RenjuBoard>::play(player, v);	}	void place_stone(Player player, Vertex<T> v) {		BasicBoard<T, RenjuBoard>::place_stone(player, v);		NbrCounterBoard<T, RenjuBoard>::place_stone(player, v);		if(good_at[v]) {			good_v_cnt--;			good_pos[good_v[good_v_cnt]] = good_pos[v];			good_v[good_pos[v]] = good_v[good_v_cnt];		}		vertex_for_each_far_nbr(v, 1, nbr_v, {			if(!good_at[nbr_v] && color_at[nbr_v] == color::empty) {				good_at[nbr_v] = true;				good_pos[nbr_v] = good_v_cnt;				good_v[good_v_cnt++] = nbr_v;			}		});	}	void remove_stone(Player pl, Vertex<T> v) {		// 按照place_stone相反的順序		NbrCounterBoard<T, RenjuBoard>::remove_stone(pl, v);		BasicBoard<T, RenjuBoard>::remove_stone(pl, v);	}	void merge_chains(Vertex<T> v_base, Vertex<T> v_new, uint i) {		Vertex<T> act_v;		chain_length[i][chain_id[i][v_base]] += chain_length[i][chain_id[i][v_new]];		act_v = v_new;		do {			chain_id[i][act_v] = chain_id[i][v_base];			act_v = chain_next_v[i][act_v];		} while(act_v != v_new);		swap(chain_next_v[i][v_base], chain_next_v[i][v_new]);// 兩個(gè)環(huán)斷開(kāi),分別接到對(duì)方環(huán)上,扭成一個(gè)大環(huán)	}public:                         // consistency checks	void check() const { // 檢查整個(gè)棋盤(pán)一致性		if(!board_ac) return;		BasicBoard<T, RenjuBoard>::check();		NbrCounterBoard<T, RenjuBoard>::check();	}};#endif //_RENJU_BOARD_H_

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区视频视频| 欧美日韩国产一级| 在线精品亚洲一区二区不卡| 欧美日韩的一区二区| 精品毛片乱码1区2区3区| 国产精品视频观看| 一区二区三区四区不卡在线| 裸体健美xxxx欧美裸体表演| 成人免费看视频| 欧美日韩亚洲综合一区二区三区| 日韩精品一区二区三区在线| 国产精品视频看| 日韩av中文字幕一区二区三区| 国产精品白丝jk白祙喷水网站| 91亚洲午夜精品久久久久久| 91精品国产91久久久久久一区二区| 久久久精品国产免费观看同学| 一区二区免费看| 国产一区二区三区观看| 欧美中文字幕一区二区三区| 久久一区二区视频| 亚洲成人自拍偷拍| 成人亚洲一区二区一| 欧美一区二区女人| 最新高清无码专区| 精品一区二区三区的国产在线播放| 99精品黄色片免费大全| 欧美白人最猛性xxxxx69交| 亚洲精品亚洲人成人网| 极品少妇一区二区三区精品视频 | 69堂国产成人免费视频| 中文字幕免费观看一区| 青椒成人免费视频| 色婷婷精品大在线视频| 国产欧美日韩精品a在线观看| 视频一区中文字幕| 日本久久一区二区三区| 国产欧美日韩在线看| 蜜桃精品视频在线观看| 在线亚洲免费视频| 国产精品私房写真福利视频| 免费成人你懂的| 欧美日韩美女一区二区| 亚洲欧洲精品一区二区精品久久久| 麻豆成人久久精品二区三区红 | 日韩av不卡一区二区| 91在线看国产| 欧美国产精品v| 国产制服丝袜一区| 欧美一卡2卡三卡4卡5免费| 亚洲一二三四区不卡| av在线播放不卡| 国产日韩视频一区二区三区| 久久66热re国产| 欧美一级欧美三级在线观看| 亚洲一区自拍偷拍| 91免费观看视频| 国产精品家庭影院| k8久久久一区二区三区| 欧美激情艳妇裸体舞| 国产成人av一区二区三区在线 | 国产一区二区中文字幕| 日韩欧美中文一区| 日韩精品电影在线观看| 欧美日韩一区二区电影| 亚洲va天堂va国产va久| 欧美色精品在线视频| 亚洲电影一级黄| 在线视频综合导航| 亚洲摸摸操操av| 色哟哟一区二区| 亚洲综合区在线| 欧美怡红院视频| 亚洲国产精品久久不卡毛片| 欧美在线不卡视频| 亚洲丰满少妇videoshd| 欧美日免费三级在线| 亚洲福利一区二区三区| 9191国产精品| 蜜乳av一区二区三区| 精品久久久久久久久久久久久久久 | 亚洲图片欧美综合| 欧美三级电影一区| 日韩二区在线观看| 精品国产免费一区二区三区四区 | 国产精品视频线看| 97精品久久久午夜一区二区三区 | 欧美一区二区精品久久911| 另类小说图片综合网| 久久综合久久99| 成人一级片网址| 亚洲三级理论片| 欧美日韩亚洲另类| 日本一区中文字幕| 精品乱码亚洲一区二区不卡| 国产乱码精品一区二区三区五月婷| 国产欧美日本一区二区三区| 成人动漫一区二区| 亚洲一二三四在线| 日韩精品最新网址| 成人自拍视频在线观看| 亚洲男帅同性gay1069| 欧美日韩不卡一区二区| 国产最新精品免费| 中文字幕一区二区5566日韩| 欧美日韩一级视频| 国产乱人伦精品一区二区在线观看| 中文欧美字幕免费| 欧美色国产精品| 国产伦精品一区二区三区视频青涩| 中文字幕在线不卡国产视频| 欧美久久一二区| 国产麻豆91精品| 一区二区三区四区在线免费观看| 欧美一区二区三区视频免费 | 国产精品无人区| 精品污污网站免费看| 精品一区二区三区在线观看国产 | 日本高清不卡在线观看| 开心九九激情九九欧美日韩精美视频电影 | 一区二区三区不卡视频| 日韩一区二区不卡| 99麻豆久久久国产精品免费优播| 亚洲国产美国国产综合一区二区| 精品国产麻豆免费人成网站| 色婷婷国产精品综合在线观看| 另类成人小视频在线| 国产精品二三区| 日韩丝袜美女视频| 99久久国产综合精品女不卡| 免费久久精品视频| 亚洲人快播电影网| 久久青草欧美一区二区三区| 精品视频999| 大尺度一区二区| 免费人成网站在线观看欧美高清| 日韩一区日韩二区| 欧美精品一区二区精品网| 在线看一区二区| 国产精品一二三四| 首页国产欧美久久| 亚洲视频一区二区在线观看| 精品粉嫩超白一线天av| 欧美色网一区二区| www.日韩精品| 国产伦精品一区二区三区免费迷| 午夜精品福利一区二区三区蜜桃| 国产精品久久免费看| 精品国产免费久久| 337p亚洲精品色噜噜| 91福利区一区二区三区| 成人av在线电影| 黄色日韩网站视频| 蜜桃一区二区三区在线观看| 一区二区三区中文字幕精品精品| 久久久av毛片精品| 日韩欧美国产电影| 欧美日韩精品欧美日韩精品| 99在线精品一区二区三区| 国精产品一区一区三区mba视频| 偷拍日韩校园综合在线| 亚洲欧美另类图片小说| 日本一区二区三级电影在线观看 | 高清视频一区二区| 狠狠色综合播放一区二区| 午夜视频在线观看一区二区 | 欧美日韩国产三级| 91福利国产精品| 色综合天天综合色综合av| 丁香啪啪综合成人亚洲小说 | 中文字幕不卡在线| 久久久久久久久97黄色工厂| 日韩免费视频线观看| 日韩一级免费一区| 制服丝袜日韩国产| 欧美一区二区三区四区五区| 欧美日韩精品是欧美日韩精品| 欧美日韩一区在线观看| 欧美日韩一二三区| 欧美人妖巨大在线| 678五月天丁香亚洲综合网| 在线综合+亚洲+欧美中文字幕| 欧美美女一区二区三区| 欧美三级日韩三级| 制服丝袜亚洲播放| 91精品国产入口| 欧美va亚洲va国产综合| 日韩欧美一区电影| 2017欧美狠狠色| 欧美国产成人在线| 国产精品国产三级国产三级人妇| 国产精品不卡一区| 亚洲老妇xxxxxx| 亚洲综合视频在线| 日本欧美一区二区三区| 国内精品不卡在线| 成人av在线一区二区| 91成人在线免费观看| 欧美福利视频导航| 日韩欧美一区在线观看|