ZCMU 1434 糖果迷陣

2021-07-26 13:44:20 字數 1468 閱讀 4518

time limit: 1 sec  

memory limit: 128 mb

submit: 34  

solved: 14 [

submit][

status][

web board]

inna 

喜歡吃糖和遊戲糖果迷陣

.今天,他推出了新遊戲「糖果迷陣

2:重新整理」。

遊戲由乙個

nxm的矩陣表組成。矩陣每行包含乙個帶有侏儒的單元格和一塊帶有糖果的單元格,和一些空的單元格。遊戲有多次操作,每次操作玩家需要選中所有那些侏儒沒獲得糖果的行,並發出指令「

let』s go!」.

之後所有選中行的侏儒開始同時向右移動,每秒每個侏儒只能向當前單元格的右側相鄰單元格移動一格,操作一直持續到發生以下事件之一時: ·

一些侏儒到達所在行的最右邊 ·

一些侏儒到達糖果所在單元格獲得糖果

當所有侏儒得到糖果時結束

inna

是如此聰明得設計出這個遊戲

. 可是你們呢

? 你的任務是用最優的方法來完成這個遊戲,也就是用最少的操作

來完成這個遊戲。

輸入的第一行包含兩個整數n和

m(1≤

n≤1000;2≤m

≤1000)。

每個接下來的

n行包含

m個字元

– 代表這局的「糖果迷陣:重新整理」。字元「

*」表示該領域的空白單元格,字元「

g」代表乙個侏儒和字元「

s」代表乙個糖果。矩陣不包含其他字元。這是保證每行包含乙個字元「

g」和乙個字元「s」。

在一行列印單個整數

- 來表示完成遊戲的最優解,或

-1如果目標不能在給定的遊戲場中可以實現所需的運動或最小數目。

3 4*g*s

g**s

*g*s

1 3s*g2

-1請使用cin>>str; 或者scanf("%s",str); 輸入

【解析】

這道題其實很坑,然人覺得是和圖有關要dfs或者bfs,其實吧這個其實沒有那麼難,意思就是g是侏儒,s是糖果在的地方,我們可以讓侏儒一起向右走,問什麼時候可以讓所有的侏儒都找到糖果,那其實就是算g和s中間有幾個不同的位置,比如樣例1總共有兩個不同的中間隔著的。比如說第一行和第三行中間都只隔了乙個,而第二行隔了2個,所有總共是兩個不同就輸出2。

#include#include#includeusing namespace std;

int main()

{ char s[10020];

int a[1002];

int i,n,m,j,flag,k,flag1,count1;

while(~scanf("%d%d",&n,&m))

{flag1=0;

count1=0;

memset(a,0,sizeof(a));

for(i=0;i

143 約瑟夫問題

143 有乙個陣列a 1000 存放0 1000 要求每隔二個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。以7個數為例 0 1 2 刪除 3 4 5 刪除 6 7 0 刪除 如此迴圈直到最後乙個數被刪除。方法1陣列 define null 1000 int main...

1 4 3 實現繼承

實現類的繼承,首先宣告乙個基類 public class shape 在宣告乙個子類 public class size 實現繼承 public class size shape 新建兩個介面 public inte ce ichangshape public inte ce ichangesize...

143 陣列的度

給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相...