藍橋杯 2016年javaB組原題剪郵票 (bfs+暴力迭代)

剪郵票


如【圖1.jpg】, 有12張連在一起的12生肖的郵票。
現在你要從中剪下5張來,要求必須是連着的。
(僅僅連接一個角不算相連)
比如,【圖2.jpg】,【圖3.jpg】中,粉紅色所示部分就是合格的剪取。
 

請你計算,一共有多少種不同的剪取方法。

解析:因爲只有十二個元素,所以可以暴力循環,嵌套五層for循環找到5個元素  ,將這些點轉化爲圖3行4列,

行數等於i/4 列數等於i%4 ,將其他點置爲不可訪問,將這五個元素置爲可訪問,於是bfs,如果五個元素全訪問到,則這種方案可行,ans++

話不多說,代碼如下:



import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

public class L2016剪郵票 {

	static boolean vis[][]=new boolean[3][4];
	static int mp[][]=new int[3][4]; 
	static int dx[]={-1,0,1,0};
	static int dy[]={0,-1,0,1};
	static class d{//點
		int x;
		int y;
		public d(int x,int y)
		{
			this.x=x;
			this.y=y;
		}
	}
	static Queue<d> q=new LinkedList<d>();
	
	static void init()
	{
		for(int i=0;i<3;i++)
		{
			Arrays.fill(vis[i], false);
			Arrays.fill(mp[i],-1);//障礙
		}
	}
	
	static boolean Check(int x,int y)
	{
		if(x>=0&&y>=0&&x<3&&y<4&&mp[x][y]!=-1)//先判斷範圍,再判斷是否爲障礙,從而達到防止
//數組越界的效果
			return true;
		return false;
	}
	
	static void bfs(int x,int y)
	{
		d cor=new d(x,y);
		q.add(cor);
		while(!q.isEmpty())
		{
			d now=q.poll();
			for(int i=0;i<4;i++)
			{
				int xx=now.x+dx[i];
				int yy=now.y+dy[i];
				if(Check(xx,yy)&&!vis[xx][yy])
				{
					vis[xx][yy]=true;
					d next=new d(xx,yy);
					q.add(next);
				}
			}
		}
		
		return ;
	}
	
	public static void main(String[] args) 
	{
		int ans=0;
		for(int i=0;i<12;i++)
		{
			for(int j=i+1;j<12;j++)
			{
				for(int k=j+1;k<12;k++)
				{
					for(int l=k+1;l<12;l++)
					{
						for(int m=l+1;m<12;m++)
						{
							init();
							mp[i/4][i%4]=1;//轉換
							mp[j/4][j%4]=1;
							mp[k/4][k%4]=1;
							mp[l/4][l%4]=1;
							mp[m/4][m%4]=1;
							vis[i/4][i%4]=true;
							bfs(i/4,i%4);
							
							if(vis[i/4][i%4]==true
								&&vis[j/4][j%4]==true
								&&vis[k/4][k%4]==true
								&&vis[l/4][l%4]==true
								&&vis[m/4][m%4]==true)
							{
								ans++;
							}
						}
							
					}
				}
			}
		}
		System.out.println(ans);
		
	}

}

得到答案:

116

感受:

藍橋杯填空題基本都可以暴力呀!!! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章