Property Distribution Aizu - 0118

2024-04-11 15:32

本文主要是介绍Property Distribution Aizu - 0118,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

タナカ氏が HW アールの果樹園を残して亡くなりました。果樹園は東西南北方向に H × W の区画に分けられ、区画ごとにリンゴ、カキ、ミカンが植えられています。タナカ氏はこんな遺言を残していました。

果樹園は区画単位でできるだけ多くの血縁者に分けること。ただし、ある区画の東西南北どれかの方向にとなりあう区画に同じ種類の果物が植えられていた場合は、区画の境界が分からないのでそれらは 1 つの大きな区画として扱うこと。

例えば次のような 3 × 10 の区画であれば ('リ'はリンゴ、'カ'はカキ、'ミ'はミカンを表す)

 

同じ樹がある区画の間の境界を消すと次のようになり、

 

結局 10 個の区画、つまり 10 人で分けられることになります。

雪が降って区画の境界が見えなくなる前に分配を終えなくてはなりません。あなたの仕事は果樹園の地図をもとに分配する区画の数を決めることです。

果樹園の地図を読み込み、分配を受けられる血縁者の人数を出力するプログラムを作成してください。

Input

複数のデータセットが与えられます。各データセットは空白で区切られた H, W (H, W ≤ 100) を含む行から始まり、続いて H × W の文字からなる H 行の文字列が与えられます。この文字列には、リンゴを表す '@'、カキを表す '#'、ミカンを表す '*'、の 3 文字しか現れません。

入力はゼロが2つの行で終わります。データセットの数は 20 を超えません。

Output

各データセットごとに、分配を受ける人数を1行に出力してください。

Sample Input

10 10
####*****@
@#@@@@#*#*
@##***@@@*
#****#*@**
##@*#@@*##
*@@@@*@@@#
***#@*@##*
*@@@*@@##@
*@*#*@##**
@****#@@#@
0 0

Output for the Sample Input

33

题意:

给你两个数字n和m,代表地图的规格是n*m(当n和m都为0时输入结束);然后就是一个地图,地图中只有三种符号,代表三种农作物,然后让你判断地图中能够分成多少块。分离的条件是相同的农作物必须是上下左右相连。

思路:

深度优先搜索;

代码如下:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;int n,m;
char map[110][110];
int sum;int nextt[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};void DFS(int x,int y,char k)
{for(int i=0; i<4; i++){int tx=x+nextt[i][0];int ty=y+nextt[i][1];if(tx>=0&&tx<n&&ty>=0&&ty<m&&map[tx][ty]==k){map[tx][ty]=' ';DFS(tx,ty,k);}}return ;
}int main()
{while(~scanf("%d%d",&n,&m)){if(n==0&&m==0)break;sum=0;memset(map,0,sizeof map);for(int i=0; i<n; i++){scanf("%s",map[i]);}for(int i=0; i<n; i++){for(int j=0; j<m; j++){if(map[i][j]!=' ')//搜索过的地方全变成空格;{sum++;DFS(i,j,map[i][j]);}}}printf("%d\n",sum);}return 0;
}

哈哈,第一次做日文题。。。。。

这篇关于Property Distribution Aizu - 0118的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894468

相关文章

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

Cannot read property ‘length‘ of null while opening vscode terminal

同一问题地址:Cannot read property ‘length’ of null while opening vscode terminal 问题描述 One day, 我在ubuntu 18.04下用vscode打开一个项目,并想和往常一样在vscode使用终端,发现报错Cannot read property 'length' of null。 解决 打开setting.jso

Android 属性动画(Property Animation)

本文是学习以下三位大神之后,整理的学习笔记,彩蛋在编号6          http://blog.csdn.net/lmj623565791/article/details/38067475          http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html          http://www.tu

Aizu - 0118(深搜)

题目链接:点击打开链接 解析: 深搜无疑,和水洼那题类似。以查找过的赋值1,然后每次找不是1的位置,一搜一片即可。最后记录多少有片区域。 完整代码: #include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <iostream>#include <cmath>

Android Property Animation属性动画

本文内容摘自《疯狂Android讲义 第三版-李刚著作》

【python】 @property属性详解

【python】 @property属性详解 一文搞懂python中常用的装饰器(@classmethod、@property、@staticmethod、@abstractmethod…)

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from 'pinia'   export const useCommonStore = defineStore('pack-store', {state: (): State => ({wwInfo: {},globalData: {},timerLoc

property 的成员属性

1、assign 范围:对基础数据类型(NSInteger 和 CGFloat) 和 C数据类型(int、float) 使用:简单赋值,不更改索引计数 2、copy(内容拷贝) 范围:对NSString、NSNumber 使用:拷贝对象,释放旧对象,开辟新的内存空间,并将索引计数设为1 深复制:copy的set方法,就是深复制 3、retain(指针拷贝) 范围:对其他NSObje

c tool系列------如何在C文件中获取property

找到一段代码作为以后的参考: char *propertyvalue = "no"; void load_tty_properties(void) { char supportDevice[PROP_VALUE_MAX]; char countryCode[PROP_VALUE_MAX]; property_get("ro.product.device", supportDevic

Cannot read property 'render' of undefined

Cannot read property 'render' of undefined 報錯, 本地和debug環境訪問正常 進行了以下排查 先查看了其他業務 訪問正常 排除全局性錯誤 推斷應該是引入組件的問題 斷點查看各個步驟下scope 發現了某個組件缺少模塊導出   參考 https://stackoverflow.com/questions/51021348/cannot-set-pr