poj 1099
http://poj.org/problem?id=1099
#include<stdio.h>
#include<string.h>
#include <iostream> using namespace std;
#define N 60 int x,y,n;
char mat[N][N]; struct node
{
int num,id;
int hang,lie;
} map[N][N]; void init()
{
int i,j;
memset(mat,,sizeof(mat));
for(i=; i<=x; i++) //空格 和 '*'
{
for(j=; j<=y; j++)
{
if(i== || i==x || j== || j==y) mat[i][j]='*';
else mat[i][j]=' ';
}
}
for(i=; i<x; i=i+) //H原子
{
for(j=; j<y; j=j+)
mat[i][j]='H';
}
for(i=; i<x; i=i+) //H原子
{
for(j=; j<y; j=j+)
mat[i][j]='H';
}
for(i=; i<x; i=i+) //O原子
{
for(j=; j<y; j=j+)
mat[i][j]='O';
}
}
void putmat()
{
int i,j;
for(i=; i<=x; i++)
{
for(j=; j<=y; j++)
printf("%c",mat[i][j]);
puts("");
}
}
int main()
{
int i,j,h,g,time=;
while(scanf("%d",&n),n)
{
if(time>)puts("");
memset(map,,sizeof(map));
y=*n+, x=*n-;//x行数,y列数
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
scanf("%d",&map[i][j].num);
map[i][j].id=n*(i-)+j;
map[i][j].hang=map[i][j].lie=map[i][j].num;
map[i][j].hang+=map[i][j-].hang;
map[i][j].lie+=map[i-][j].lie;
}
} init();
int k=;
for(i=; i<=x; i++)
{
for(j=; j<=y; j++)
{
if(mat[i][j]=='O')
{
int find=;
for(h=; h<=n; h++)
{
for(g=; g<=n; g++)
if(map[h][g].id==k)
{
find=,k++;
break;
}
if(find)break;
}
if(map[h][g].num==) mat[i][j-]='-',mat[i][j+]='-';
else if(map[h][g].num==-) mat[i-][j]='|',mat[i+][j]='|';
else if(map[h][g].num==)
{
if(map[h][g].hang==) mat[i][j-]='-';
else if(map[h][g].hang==) mat[i][j+]='-';
if(map[h][g].lie==) mat[i+][j]='|';
else if(map[h][g].lie==) mat[i-][j]='|';
}
}
}
}
printf("Case %d:\n\n",time++);
putmat();
}
return ;
}
找规律:
题目要求输出的图中如果先不管 H-O 键的话,也就是说光看 H 和 O 原子的话,它们的位置是有规律的,H 原子分两种,一种是从点(2,2)开始横,纵坐标分别以 4 递增,另一种是从点(4,4)开始横,纵坐标分别以 4 递增。而 O 原子的个数就是 n*n ,从(2,4)开始,以 4 递增。我们可以先画出一张没有 H-O 键的图来,然后在根据 数字矩阵中的值,给每一个 O 原子加上两个 H-O 键就可以了。
最后加上 H-O 键的时候,按 数字矩阵 分3种情况,1 和 -1 时,很好处理,关键是 0 的时候。仔细看题,有这么一句话: ……the sum of each row and column is 1 ……
就是这句了,解题点,根据 数字矩阵 中该行(或列)上 从开始到现在的点的数值和,可以判断,这个 H-O 键的方向:
上下:该列第一行到该行的数值和,0代表 H-O 在这个 O 原子下面,1是上。
左右:该行第一列到该列的数值和,0代表 H-O 在这个 O 原子左面,1是右。
poj 1099的更多相关文章
- POJ 1099 Square Ice
Square Ice Description Square Ice is a two-dimensional arrangement of water molecules H2O, with oxyg ...
- POJ 1099 Square Ice 连蒙带猜+根据样例找规律
目录 题面 思路 思路 AC代码 题面 Square Ice Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4526 A ...
- POJ题目排序的Java程序
POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ 3286 How many 0's?(几多0?)
POJ 3286 How many 0's?(几多0?) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A Benedi ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
随机推荐
- RPC学习----Thrift快速入门和Java简单示例
一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议 ...
- verilog循环结构
1. always(posedge CLOCK) . case(i) . . : . ) ’d0; i <= i + ’b1; end . ’b1; C1 <= C1 + ’b1; end ...
- MAC npm 需要管理员权限问题
我们在进行mac 命令行安装软件的时候,有的时候会遇见这样的问题:Please try running this command again as root/Administrator. 如图: 解决 ...
- eyegaze
1. eye_gaze https://github.com/iitmcvg/eye-gaze 2.deepgaze https://github.com/mpatacchiola/deepgaze ...
- 长轮询(long polling)
HTTP请求不是持续的连接,你请求一次,服务器响应一次,然后就完了.长轮训是一种利用HTTP模拟持续连接的技巧.具体来说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax ...
- cod-hw
COD hw 4 Xinglu Wang 3140102282 2016-12-27 21:28:01 COD hw 45.35.3.15.3.35.3.45.3.55.3.65.45.4.15.4. ...
- iOS Sonar 集成流程
https://gold.xitu.io/entry/5781e6872e958a0054c93368 作者:advancer_chen,原文链接:http://my.oschina.net/Chen ...
- windows读取mac格式移动硬盘的方法
本文记录了一些window与mac数据在移动设备上互相拷贝的经验. 一.准备 家里有一台mac电脑,限于硬盘空间比较小,需要定期备份一些数据. 由于备份数据大小在20G左右,并且并没有压缩为一个压缩文 ...
- 添加Properties取值和枚举取值
<!--配置文件--><property name="ppp"> <props> <prop key="11"> ...
- C# v3微信 access token 过期处理的问题
//记录access token 申请时的时间 private static DateTime GetAccessToken_Time; /// <summary> /// 过期时间为72 ...