国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

2016年藍(lán)橋杯C語言大學(xué)A組題目3--方格填數(shù)

2019-11-10 21:07:16
字體:
供稿:網(wǎng)友

題目3.方格填數(shù)

如下的10個(gè)格子

填入0~9的數(shù)字。要求:連續(xù)的兩個(gè)數(shù)字不能相鄰。

(左右、上下、對(duì)角都算相鄰)

一共有多少種可能的填數(shù)方案?

請(qǐng)?zhí)顚懕硎痉桨笖?shù)目的整數(shù)。

注意:你提交的應(yīng)該是一個(gè)整數(shù),不要填寫任何多余的內(nèi)容或說明性文字。

數(shù)學(xué)好的可以直接用數(shù)學(xué)推算出來,用組合與計(jì)數(shù)的方法還是可以的。

既然藍(lán)橋杯考驗(yàn)計(jì)算機(jī)編程能力,我這里還是采用算法來做。

這是一道考察dfs算法的題目,首先10個(gè)格子不夠規(guī)范,我們先補(bǔ)成12個(gè)格子(3*4)。

接下來要注意三個(gè)步驟:

①初始化:如何制作表格;如何給每個(gè)格子打上標(biāo)記的問題;

②判斷:判斷點(diǎn)有哪些?

是否在矩陣內(nèi)?該格子是否可用?是左上還是右下的那個(gè)格子不能用?

③DFS搜索:三種情況的討論?

左上角?右下角?一般情況?

DFS算法的注意點(diǎn):DFS對(duì)某個(gè)格子的數(shù)字搜索完后一定要還原,一定!!!

/*name:Rollchuchytype:dfs*/#include<iostream>#include<cstdio>#include<cmath>using namespace std;int row=3,col=4; int map[3][4];int flag[3][4];int vis[10];int dis[8][2]={0,1,//right0,-1,//left1,0,//up-1,0,//dowm1,1,-1,1,1,-1,-1,-1,}; //方向 int ans=0; void init(){	//init   	for(int i=0;i<10;i++){   		vis[i]=0;	   }	for(int i=0;i<row;i++){		for(int j=0;j<col;j++){			map[i][j]=0;			flag[i][j]=1;		}	}	//左上和右下兩個(gè)格子不能用 	flag[0][0]=0;	flag[2][3]=0;	}void check(){	int temp=1;//檢驗(yàn)該填法是否合法	for(int i=0;i<3;i++){		for(int j=0;j<4;j++){			if(flag[i][j]==0) continue;			for(int k=0;k<8;k++){				int x=i+dis[k][0];				int y=j+dis[k][1];				//移動(dòng)后是否還在矩形內(nèi)? 				if(x<0||x>=3||y<0||y>=4||flag[x][y]==0) continue;				if(abs(map[i][j]-map[x][y])==1) temp=0;			}		}	} 	if(temp){		ans++;	}}void dfs(int n){	int x=n/4;//row	int y=n%4;//col	if(x==3){//針對(duì)右下最后一個(gè)格子 	//12個(gè)格子全部搜索完畢,dfs結(jié)束 		check();		return ;	}	if(flag[x][y]){		for(int i=0;i<=9;i++){			if(vis[i]==0){				map[x][y]=i;				vis[i]=1;				dfs(n+1); 				vis[i]=0; //注意!一定要還原 			}		}	}	else{//針對(duì)左上第一個(gè)格子 		dfs(n+1); 	} } int main(){	init();	dfs(0);	cout<<ans<<endl;   return 0; }


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南木林县| 皋兰县| 大厂| 岑溪市| 扬中市| 兴仁县| 会东县| 长海县| 铜川市| 洛隆县| 莱西市| 九寨沟县| 普兰县| 黑龙江省| 洛川县| 玛纳斯县| 阿坝| 沙河市| 平凉市| 怀集县| 岳阳市| 多伦县| 雷波县| 武义县| 镇坪县| 尖扎县| 江华| 灵宝市| 镇远县| 科尔| 镇江市| 新和县| 绿春县| 柳州市| 克什克腾旗| 手机| 莱州市| 英德市| 嵩明县| 康保县| 托里县|