package s3;
import java.util.Scanner;
public class test8 {
/*
* 標題:蘭頓螞蟻 蘭頓螞蟻,是於1986年,由克里斯·蘭頓提出來的,屬於細胞自動機的一種。
* 平面上的正方形格子被填上黑色或白色。在其中一格正方形內有一隻“螞蟻”。 螞蟻的頭部朝向爲:上下左右其中一方。 螞蟻的移動規則十分簡單:
* 若螞蟻在黑格,右轉90度,將該格改爲白格,並向前移一格; 若螞蟻在白格,左轉90度,將該格改爲黑格,並向前移一格。
* 規則雖然簡單,螞蟻的行爲卻十分複雜。剛剛開始時留下的路線都會有接近對稱,
* 像是會重複,但不論起始狀態如何,螞蟻經過漫長的混亂活動後,會開闢出一條規則的“高速公路”。 螞蟻的路線是很難事先預測的。
* 你的任務是根據初始狀態,用計算機模擬蘭頓螞蟻在第n步行走後所處的位置。 【數據格式】 輸入數據的第一行是 m n 兩個整數(3 < m, n <
* 100),表示正方形格子的行數和列數。 接下來是 m 行數據。 每行數據爲 n 個被空格分開的數字。0 表示白格,1 表示黑格。
*
* 接下來是一行數據:x y s k, 其中x y爲整數,表示螞蟻所在行號和列號(行號從上到下增長,列號從左到右增長,都是從0開始編號)。s
* 是一個大寫字母,表示螞蟻頭的朝向,我們約定:上下左右分別用:UDLR表示。k 表示螞蟻走的步數。
*
* 輸出數據爲兩個空格分開的整數 p q, 分別表示螞蟻在k步後,所處格子的行號和列號。
*
*
* 例如, 輸入: 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
* 3 L 5 程序應該輸出: 1 3
*
* 再例如, 輸入: 3 3 0 0 0 1 1 1 1 1 1 1 1 U 6 程序應該輸出: 0 0
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
int[][] c=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
c[i][j]=scan.nextInt();
}
}
int x=scan.nextInt();
int y=scan.nextInt();
String s1=scan.next();//方向
int k=scan.nextInt();//步數
char s=s1.charAt(0);
int sum=0;
while(true){
if(sum==k){
break;
}
if(s=='U'){
if(c[x][y]==1){
s='R';
c[x][y]=0;
x=x;
y=y+1;
sum++;
// System.out.println(x+","+y);
}else{
s='L';
c[x][y]=1;
x=x;
y=y-1;
sum++;
// System.out.println(x+","+y);
}
}
if(s=='D'){
if(c[x][y]==1){
s='L';
c[x][y]=0;
x=x;
y=y-1;
sum++;
//System.out.println(x+","+y);
}else{
s='R';
c[x][y]=1;
x=x;
y=y+1;
sum++;
//System.out.println(x+","+y);
}
}
if(s=='L'){
if(c[x][y]==1){
s='U';
c[x][y]=0;
x=x-1;
y=y;
sum++;
//System.out.println(x+","+y);
}else{
s='D';
c[x][y]=1;
x=x+1;
y=y;
sum++;
//System.out.println(x+","+y);
}
}
if(s=='R'){
if(c[x][y]==1){
s='D';
c[x][y]=0;
x=x+1;
y=y;
sum++;
//System.out.println(x+","+y);
}else{
s='U';
c[x][y]=1;
x=x-1;
y=y;
sum++;
//System.out.println(x+","+y);
}
}
}
System.out.println(x+","+y);
}
}
藍橋杯題目8蘭頓螞蟻 蘭頓螞蟻,是於1986年,由克里斯·蘭頓提出來的,屬於細胞自動機的一種。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
藍橋杯題目6李白打酒
package s3; public class test6 { private static int q=0; public st
blue_lanse
2020-06-25 23:15:54
藍橋杯題目10矩陣翻硬幣
package s3; import java.util.Scanner; public class test10 { /* 標題:矩陣翻硬幣
blue_lanse
2020-06-25 23:15:54
[藍橋杯] 國王的煩惱 並查集+思維
Garett_Zeng
2020-06-20 04:17:40
2017【第八屆藍橋杯初賽】 C/C++ B組
From now on...
2020-06-17 11:57:58
dotcpp1441-2013年第四屆真題-幸運數(。。?)
[藍橋杯][2013年第四屆真題]幸運數 時間限制: 1Sec 內存限制: 128MB 提交: 836 解決: 384 題目描述 幸運數是波蘭數學家烏拉姆命名的。它採用與生
From now on...
2020-06-17 11:57:58
藍橋杯 2019 Java C 矩陣分割 帶原理解析
学市场营销只有饿死
2020-05-10 14:25:24
藍橋杯 日曆問題 星際炸彈
学市场营销只有饿死
2020-05-06 04:52:12
藍橋杯 DFS第四屆Java C組 第二題 求素數 個數
学市场营销只有饿死
2020-05-06 04:52:12
Java實現 LeetCode 887 雞蛋掉落(動態規劃,谷歌面試題,藍橋杯真題)
南 墙
2020-04-14 09:30:40
藍橋杯題目1猜年齡
blue_lanse
2020-02-25 11:37:19
藍橋杯題目2等額本金
blue_lanse
2020-02-25 11:37:19
藍橋杯題目3猜字母
blue_lanse
2020-02-25 11:36:59
藍橋杯題目4大衍數列
blue_lanse
2020-02-25 11:36:59