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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basic_board.h

?? uct算法
?? H
字號:
#ifndef _BASIC_BOARD_H_#define _BASIC_BOARD_H_// class Boardtemplate<uint T, typename Derive> class BasicBoard {public:	static const uint board_size = T;	static const uint board_area = T * T;	static const uint max_empty_v_cnt = board_area;	static const uint max_game_length = board_area * 4;	FastMap<Vertex<T>, Color>       color_at; // 每個點的顏色,這是棋盤的基本結構	FastMap<Vertex<T>, uint>        empty_pos; // 如果一個點是empty,記錄其在empty_v中的索引值	Vertex<T>                       empty_v [board_area]; // 棋盤上的空點	uint                         	empty_v_cnt;	Player                       a_player;      // player who made the last play(other::player is forbidden to retake)	// 記錄Player占據的數量	uint			     player_v_cnt[player::cnt]; // map Player to uint	Vertex<T>		     player_last_v[player::cnt];// map Player to Vertex	// 記錄行棋歷史	uint                         move_no;	Move<T>                      move_history [max_game_length];public: // macro// 對所有空點  #define empty_v_for_each(board, vv, i) {                             \      Vertex<T> vv = Vertex<T>::any();                                 \      rep(ev_i, (board)->empty_v_cnt) {                                \        vv = (board)->empty_v [ev_i];                                  \        i;                                                             \      }                                                                \    }// 對所有空點以及pass  #define empty_v_for_each_and_pass(board, vv, i) {                    \      Vertex<T> vv = Vertex<T>::pass();                                \      i;                                                               \      rep(ev_i, (board)->empty_v_cnt) {                                \        vv = (board)->empty_v [ev_i];                                  \        i;                                                             \      }                                                                \    }public:                         // board interface	BasicBoard() { // TODO: 可以考慮預先建立全局空棋盤來優化性能		init(); 		cout << ""; // TODO remove this stupid statement	}	void load(const Derive* save_board) { // 快速拷貝棋盤,要求棋盤實現為淺拷貝		Derive* p = static_cast<Derive*>(this);		memcpy(p, save_board, sizeof(Derive)); 		check();	}	void init() {		empty_v_cnt  = 0;		move_no = 0;		player_for_each(pl) {			player_v_cnt[pl] = 0;			player_last_v[pl] = Vertex<T>::any();		}		a_player = player::black;		vertex_for_each_all(v) {			color_at[v] = color::off_board;			if(v.is_on_board()) {				// 登記空點				color_at[v] = color::empty;				empty_pos[v] = empty_v_cnt;				empty_v[empty_v_cnt++] = v;			}		}		check();	}protected: // play move functions	void play(Player player, Vertex<T> v) { // Warning: has to be called before place_stone, because of hash storing		assertc(board_ac, move_no <= max_game_length);		a_player = player::other(player);		player_last_v[player]  = v;		move_history[move_no]  = Move<T>(player, v);		move_no += 1;	}protected: // auxiliary functions	void place_stone(Player pl, Vertex<T> v) {		player_v_cnt[pl]++;		color_at[v] = color::from_player(pl);		empty_v_cnt--;		empty_pos[empty_v[empty_v_cnt]] = empty_pos[v];		empty_v[empty_pos[v]] = empty_v[empty_v_cnt];	}	void remove_stone(Player pl, Vertex<T> v) {		player_v_cnt[pl]--;		color_at[v] = color::empty;		empty_pos[v] = empty_v_cnt;		empty_v[empty_v_cnt++] = v;		assertc(board_ac, empty_v_cnt < Vertex<T>::cnt);	}public: // utils	// TODO/FIXME last_player should be preserverd in undo function	//Player act_player() const { return player::other(last_player); } 	Player act_player() const { return a_player; } 	bool both_player_pass() {		return 			(player_last_v [player::black] == Vertex<T>::pass()) & 			(player_last_v [player::white] == Vertex<T>::pass());	}	void print_cerr(Vertex<T> v = Vertex<T>::pass()) const {		cerr << to_string(v);	}public:                         // consistency checks	void check() const { // 檢查整個棋盤一致性		if(!board_ac) return;		check_empty_v();		check_color_at();	}private:	void check_empty_v() const { //檢查color_at,empty_pos,empty_v的一致性		if(!board_empty_v_ac) return;		FastMap<Vertex<T>, bool> noticed;		uint exp_player_v_cnt[player::cnt];		vertex_for_each_all(v) noticed[v] = false;		assert(empty_v_cnt <= board_area);		empty_v_for_each(this, v, {				assert(noticed [v] == false);				noticed [v] = true;				});		player_for_each(pl) exp_player_v_cnt [pl] = 0;		vertex_for_each_all(v) {			assert((color_at[v] == color::empty) == noticed[v]);			if(color_at[v] == color::empty) {				assert(empty_pos[v] < empty_v_cnt);				assert(empty_v [empty_pos[v]] == v);			}			if(color::is_player(color_at [v])) exp_player_v_cnt [color::to_player(color_at[v])]++;		}		player_for_each(pl) 			assert(exp_player_v_cnt [pl] == player_v_cnt [pl]);	}	void check_color_at() const { // 棋盤上的點不能是off_board		if(!board_color_at_ac) return;		vertex_for_each_all(v) {			color::check(color_at [v]);			assert((color_at[v] != color::off_board) == (v.is_on_board()));		}	}};#endif //_BASIC_BOARD_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美区自拍先锋| 欧美夫妻性生活| 中文字幕va一区二区三区| 国产黄人亚洲片| 国产欧美日韩麻豆91| 成人av电影在线| 亚洲精品国产a| 欧美日本视频在线| 精品一二三四区| 国产日韩视频一区二区三区| av成人免费在线观看| 亚洲一区免费观看| 日韩一区二区麻豆国产| 国内一区二区在线| 一区二区中文视频| 欧美伦理电影网| 国产成人综合精品三级| 亚洲一区在线观看免费| 日韩精品一区二区三区在线| 成熟亚洲日本毛茸茸凸凹| 亚洲免费av在线| 日韩欧美在线一区二区三区| 国产91在线看| 亚洲午夜视频在线观看| 精品三级av在线| 91小视频在线免费看| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久精品免视看| 在线精品观看国产| 国产一区二区三区免费播放| 中文字幕中文在线不卡住| 在线播放中文一区| 成人免费av网站| 日本美女一区二区| 18成人在线观看| 日韩美女视频一区二区在线观看| 91丨九色丨黑人外教| 日本欧美一区二区三区乱码| 日韩码欧中文字| 精品电影一区二区三区| 欧美午夜宅男影院| 国产+成+人+亚洲欧洲自线| 亚洲成av人**亚洲成av**| 久久精品免费观看| 国产精品九色蝌蚪自拍| 日韩精品一区二区三区三区免费 | 国产精品国产a| 欧美精品三级在线观看| 成人av影院在线| 看电视剧不卡顿的网站| 亚洲一二三四在线观看| 国产精品久久久一区麻豆最新章节| 欧美日本一道本在线视频| 91啪九色porn原创视频在线观看| 九色综合狠狠综合久久| 亚洲福利电影网| 国产精品国产a级| 欧美高清在线一区二区| 精品人伦一区二区色婷婷| 欧美日韩精品免费| 日本韩国一区二区三区视频| 成人精品鲁一区一区二区| 黄网站免费久久| 日产精品久久久久久久性色| 亚洲黄色在线视频| 一区二区三区欧美视频| 国产精品久久影院| 国产精品欧美久久久久一区二区 | 国产精品综合久久| 青娱乐精品视频在线| 亚洲国产一区二区视频| 亚洲柠檬福利资源导航| 亚洲视频一二三区| 成人欧美一区二区三区小说| 亚洲欧洲成人精品av97| 久久精品水蜜桃av综合天堂| 精品国产污污免费网站入口| 日韩欧美国产电影| 欧美成人aa大片| 精品久久国产97色综合| 精品国产三级电影在线观看| 69久久99精品久久久久婷婷| 日韩一区二区三区av| 日韩视频不卡中文| 欧美tk丨vk视频| 久久久久久久网| 亚洲国产精品黑人久久久| 中文字幕精品一区二区精品绿巨人 | 成人18精品视频| 波多野结衣视频一区| 99久久久无码国产精品| 色综合天天视频在线观看| 色伊人久久综合中文字幕| 91啦中文在线观看| 在线播放日韩导航| 久久久久久久久蜜桃| 国产精品蜜臀av| 一区二区免费在线播放| 亚洲国产精品人人做人人爽| 亚洲国产一区视频| 欧美一区二区网站| 日韩欧美资源站| 国产精品美女久久久久高潮| 最新国产精品久久精品| 亚洲www啪成人一区二区麻豆| 青青青爽久久午夜综合久久午夜| 国产一区视频在线看| 99v久久综合狠狠综合久久| 欧美伊人久久大香线蕉综合69| 欧美一级国产精品| 国产精品短视频| 午夜私人影院久久久久| 麻豆精品一区二区| 成人av网站在线| 欧美亚男人的天堂| 精品国产乱码久久久久久久 | 亚洲制服丝袜在线| 国内久久精品视频| 欧美性猛交一区二区三区精品| 欧美一区二区三级| 18成人在线视频| 久久精品国产免费| 99久久国产免费看| 精品日韩一区二区| 亚洲午夜激情网站| 福利一区二区在线| 欧美一二三四在线| 亚洲美女屁股眼交| 国内精品写真在线观看| 欧美群妇大交群中文字幕| 国产女人水真多18毛片18精品视频| 亚洲福利视频一区| 91亚洲精华国产精华精华液| 精品99999| 天天操天天色综合| 91丝袜美女网| 国产精品网站在线| 精品亚洲porn| 欧美酷刑日本凌虐凌虐| 亚洲视频狠狠干| 国产99久久久国产精品免费看| 欧美一级黄色录像| 亚洲成a人v欧美综合天堂| 成人永久aaa| 亚洲精品在线一区二区| 日韩电影一二三区| 欧美日韩不卡一区二区| 一区二区三区四区蜜桃| 成人avav在线| 欧美经典三级视频一区二区三区| 日本美女一区二区| 91精品欧美一区二区三区综合在| 亚洲黄一区二区三区| 91美女精品福利| 亚洲天天做日日做天天谢日日欢| 国产成人综合亚洲网站| 久久亚洲免费视频| 久久99久久久久久久久久久| 欧美卡1卡2卡| 日日夜夜精品视频免费| 欧美另类变人与禽xxxxx| 一区二区三区四区视频精品免费 | 卡一卡二国产精品 | 欧美日韩中文字幕精品| 一区二区三区四区激情| 色网综合在线观看| 国产精品久久三| 91欧美一区二区| 亚洲女性喷水在线观看一区| 2020国产精品久久精品美国| 韩日欧美一区二区三区| 精品国产乱码久久久久久老虎| 韩国精品免费视频| 国产色产综合色产在线视频| 国产精品综合视频| 国产精品美女久久久久高潮| 91免费国产视频网站| 伊人一区二区三区| 欧美性大战久久| 午夜电影一区二区三区| 6080yy午夜一二三区久久| 麻豆免费看一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 老司机一区二区| 国产日韩欧美不卡| 91蜜桃网址入口| 天堂成人免费av电影一区| 日韩西西人体444www| 国产一区二区三区视频在线播放| 国产精品免费视频网站| 一本大道av一区二区在线播放| 五月综合激情日本mⅴ| 欧美成人一区二区三区片免费| 国产精品一区免费视频| 国产精品久久久久久福利一牛影视 | 亚洲国产综合色| 欧美mv日韩mv国产网站app| 成人美女视频在线观看18| 夜夜亚洲天天久久| 精品奇米国产一区二区三区|