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的更多相关文章

  1. POJ 1099 Square Ice

    Square Ice Description Square Ice is a two-dimensional arrangement of water molecules H2O, with oxyg ...

  2. POJ 1099 Square Ice 连蒙带猜+根据样例找规律

    目录 题面 思路 思路 AC代码 题面 Square Ice Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4526   A ...

  3. POJ题目排序的Java程序

    POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...

  4. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  5. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  6. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  7. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  8. POJ 3286 How many 0's?(几多0?)

    POJ 3286 How many 0's?(几多0?) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A Benedi ...

  9. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

随机推荐

  1. generator class 的含义

    native有天生的,本土的,也就是说生来就有的, 那也就是说自动生成,不需要人工来帮忙或者管控的. 而assigned是指指定的,分配的, 如果你不赋予他甚麼东西,那麼他是不能实现的. 需要人工,自 ...

  2. JS编写全选,复选按钮

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. [刘阳Java]_JVM工作流程_第4讲

    程序员写好一段Java源程序-->编译-->字节码-->JVM-->硬件平台(操作系统)

  4. Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

    (转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...

  5. HTTP Client工具类

    HTTP Client工具类: import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.ht ...

  6. bash fifo管道使用测试例子

    碰到一个场景: 一个脚本内起了多个后台线程,往一个日志文件写日志,结果因为线程之间争抢写锁,导致脚本执行效率很低,为了解决这个问题,希望减少写锁的争抢,尝试使用fifo解决该问题,以下是实验用例子. ...

  7. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  8. [php-src]Php扩展的多文件编译

    内容均以php5.6.14为例. 假设有模块 foo,php_foo.h 和 foo.c 是固有文件,额外的C文件如果要加入编译,大致有五步. 1. 新增头文件 foo_bar.h #ifndef F ...

  9. cookie session URL重写 与考试

    状态管理.Cookie.Session.URL重写 HTTP协议:无状态的连接(每次连接都是新的请求)1.隐藏字段 <input type="hidden" name=&qu ...

  10. getElementsByTagName获得的不是数组的问题!

    getElementsByTag() returns a NodeList instead of an Array. You can convert a NodeList to an Array bu ...