kyos1704活動記

適当に考えたことや調べたことを垂れ流すものです。質問等ありましたらtwitter:@kyos1704 に質問してください。

SRM566-div2-easy-250

タイルを移動させる問題

空白を右下に移動させるのを目的にして
移動回数が最小の時の移動回数を求める。
直線の移動は一回と数える



#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
using namespace std;


class PenguinTiles{
public:
	int minMoves(vector <string> tiles){
		int ans=2;
		int i_size=tiles.size();
		int j_size=tiles[0].size();
		
		for(int i=0;i<i_size;i++){
			for(int j=0;j<j_size;j++){
				if(tiles[i][j]=='.'){
					if(i==i_size-1){
						ans--;
					}
					if(j==j_size-1){
						ans--;
					}
				}
			}
		}
		
		
		return ans;
	}
};

<

解法

一般的に右に移動、下に移動、で二回
空白が最右の時と最下の時は移動が一回必要なくなるので、