岛上的植物
来源:互联网 发布:饥荒联机百科全书软件 编辑:程序博客网 时间:2024/04/28 07:35
#include <iostream>
#include <math.h>
using namespace std;
int lenp,leno,map[101][101],v[101][101];
int n,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1},ap[1000];
bool cal(int m)
{
if (m==1)
return 0;
for (int i=2; i<=sqrt(m); i++)
if (!(m%i))
return 0;
return 1;
}
void dfsp(int x,int y)
{
int i,nx,ny;
for (i=0,v[x][y]=1; i<4; i++) {
nx=x+dx[i];
ny=y+dy[i];
if (nx>=0&&nx<n&&ny>=0&&ny<n&&!v[nx][ny]&&cal(map[nx][ny])) {
ap[lenp]++;
dfsp(nx, ny);
}
}
}
void dfso(int x,int y)
{
int i,nx,ny;
for (i=0,v[x][y]=1; i<4; i++) {
nx=x+dx[i];
ny=y+dy[i];
if (nx>=0&&nx<n&&ny>=0&&ny<n&&!v[nx][ny]&&!cal(map[nx][ny]))
dfso(nx, ny);
}
}
int main()
{
int i,j,lab=1;
while (scanf("%d",&n)&&n!=-1) {
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%d",&map[i][j]);
lenp=0;leno=0;
memset(v, 0, sizeof(v));
memset(ap, 0, sizeof(ap));
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (!v[i][j]&&cal(map[i][j])) {
dfsp(i, j);
lenp++;
}
else if (!v[i][j]&&!cal(map[i][j])) {
dfso(i,j);
leno++;
}
sort(ap, ap+lenp);
printf("Area %d:\n",lab++);
printf("%d unique vegetation regions:",lenp);
for (i=0; i<lenp; i++)
printf(" %d",ap[i]+1);
printf("\n%d non-unique vegetation regions\n",leno);
}
return 0;
}
/*
Problem description
测绘人员将卫星拍摄的地面遥感图像转换成了数值方阵。方阵中的每个元素都是正整数,代表某单位面积土地上的植物类型。元素为质数时对应土地上的植物为稀有类型,元素为合数时对应土地上的植物为常见类型。为保护稀有植物,林业局雇佣你编写程序分析上述数值方阵,从中检测出稀有植物区和非稀有植物区。划分区域的原则是:如果数值方阵中的两个元素同为质数或同为合数,而且它们共行相邻或共列相邻,则这两个元素同属一个区域。
Input
输入文件中包含若干待分析的数值方阵。方阵的每一行占据文件的每一行,同一行的方阵元素之间用空格分隔。每个数值方阵的前一行包含且仅包含一个正整数,代表该方阵的行数。文件的结尾行包含且仅包含一个负整数。数值方阵的行数不会超过100,元素的值不会大于100000000。
Output
针对输入文件中的每一个数值方阵分别输出如下信息: 1该数值方阵的序号(按照其在输入文件中的位置从1计起)。格式是:“Area n:” (n代表方阵序号) 2稀有植物区域的数目和每个稀有植物区域的面积(按升序排列)。格式是: “M unique vegetation regions: a1 a2 ...” (M为区域数目,a1, a2,...等代表每个区域的面积) 3非稀有植物区域的数目。格式是:“K non-unique vegetation regions” (K为区域数目)具体的输出格式请参考示例。
Sample Input
3
2 4 9
17 6 37
29 8 11
4
2 3 12 15
5 7 21 33
4 6 11 17
8 9 13 29
-1
Sample Output
Area 1:
2 unique vegetation regions: 2 3
1 non-unique vegetation regions
Area 2:
2 unique vegetation regions: 4 4
2 non-unique vegetation regions
*/
- 岛上的植物
- 在奥比岛上的飞鸽传书
- 《岛上书店》一本被高估的书
- 岛上书店
- 吃动物的植物
- 计算机工作室的植物
- 我种的植物
- 1003 神奇的植物
- 神奇的植物
- 我喜欢的植物
- 植物的知识
- 改善室内空气的健康植物
- 夜间释放氧气的植物
- 植物叶子的实时渲染
- Unity3d 真实的植物渲染
- Unity3d 真实的植物渲染
- 植物细胞分割的源代码
- cocos2dx 植物大战僵尸 11 场景自带的植物
- 高精度加减乘运算
- opencv学习-core结构学习
- opencv学习_14 (图像的尺度空间)
- typedef int (init_fnc_t) (void)和typedef int (*init_fnc_t) (void)
- http://uos-embedded.googlecode.com/svn/trunk/sources/runtime/memset-fast.c
- 岛上的植物
- 一维树状数组小结
- C#学习笔记之四:接口
- ios 上传头像 从本地获取照片、拍照及剪裁并上传到界面上
- OC之文件管理写入文件
- 仿淘宝悬浮顶部工具栏 之 方法二改进
- iOS7应用开发5、视图控制器View Controller及其生命周期
- 技术文化和惨淡命运 —— 怀念中国雅虎
- debian 7 root用户下无法使用gedit