1043 方格取数

2000年NOIP全国联赛提高组

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
题目描述 Description

设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):

某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。

输入描述 Input Description

输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。

输出描述 Output Description

只需输出一个整数,表示2条路径上取得的最大的和。

样例输入 Sample Input

8

2  3  13

2  6   6

3  5   7

4  4  14

5  2  21

5  6   4

6 3  15

7 2  14

0 0  0

样例输出 Sample Output

67

数据范围及提示 Data Size & Hint
如描述

#include<cstdio>
#include<iostream>
using namespace std;
int a[][];
int n,x,y,z;
int f[][][][];
int main()
{
scanf("%d",&n);
do
{
scanf("%d%d%d",&x,&y,&z);
a[x][y]=z;
}while(x!=&&y!=&&z!=);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<=n;k++)
for(int l=;l<=n;l++)
{
int x1=,x2=,x3=,x4=;
x1=f[i-][j][k-][l];
x2=f[i-][j][k][l-];
x3=f[i][j-][k-][l];
x4=f[i][j-][k][l-];
f[i][j][k][l]=max(max(x1,x2),max(x3,x4));
if((i==k)&&(j==l))
f[i][j][k][l]+=a[i][j];
else
f[i][j][k][l]+=(a[i][j]+a[k][l]);
}
printf("%d",f[n][n][n][n]);
return ;
}
 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 
题目描述 Description

Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.
问题描述

在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。

输入描述 Input Description

输入初试状态,一行九个数字,空格用0表示

输出描述 Output Description

只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数(测试数据中无特殊无法到达目标状态数据)

样例输入 Sample Input

283104765

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

详见试题

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int c[]={,,,,,,,,};//1,2,3~8的阶乘
int dict2[]={,,,-},
dict1[]={-,,,};
int www;
int step[];
int steps; char q[][];
char mb[]={,,,,,,,,}; bool used[],sign; int hash(char str[])
{
int i,j,k;
int f[];
int sum=;
memset(f,,sizeof(f));
for (i=;i<;i++)
{
k=;
for (j=;j<;j++) //找出第一个字符在字符串子串中是第几大。
if (j<str[i] && !f[j])
k++;
f[str[i]]=; //该字符已经判断过,以后的子串的第一个比较时不再和这个比较
sum+=k*c[-i]; //存下an*(n-1)!
}
return sum; //总和
}
void bfs()
{
int i,j,h,t;
int x1,y1,z1,cx,cy,cz;
memset(used,,sizeof(used));
memset(step,,sizeof(step));
www=hash(q[]);
used[www]=;
h=; //队列头尾标记
t=;
while (h<t)
{
sign=;
for (i=;i<;i++)
if (q[h][i]!=mb[i])
{
sign=true;
break;
} if (!sign)
{
steps=step[h];
return;
} for (i=;i<;i++)
if (q[h][i]==)
{
x1=i/;
y1=i%;
z1=i;
break;
}
for (i=;i<;i++)
{
cx=x1+dict1[i];
cy=y1+dict2[i];
cz=cx*+cy;
if ((cx>=) && (cx<) && (cy>=) && (cy<))
{
for (j=;j<;j++)
q[t][j]=q[h][j];
q[t][z1]=q[h][cz];
q[t][cz]=;
www=hash(q[t]);
if (!used[www])
{
used[www]=;
step[t]=step[h]+;
t++;
}
}
}
h++;
}
steps=-;
return;
}
int main()
{
int i;
char in[];
scanf("%s",in);
for (i=;i<;i++)
q[][i]=in[i]-''+;
bfs();
printf("%d",steps);
return ;
}
 时间限制: 2 s
 空间限制: 8000 KB
 题目等级 : 钻石 Diamond
题目描述 Description

在一个n*m的方阵中

寻找somebody的位置

有可能k不存在输出“biantai”

输入描述 Input Description

共n+1行

第一行 n m k

后n行为方阵

输出描述 Output Description

输出k的行和列

样例输入 Sample Input

2 4 9

1 1 4 5

5 9 4 0

样例输出 Sample Output

2 2

数据范围及提示 Data Size & Hint

n<10 m<10

有可能k不存在输出“biantai”

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,k;
int a[][];
int x;
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&x);
if(x==k)
{
printf("%d %d",i,j);
return ;
}
}
printf("biantai\n");
return ;
}

codevs 搜索题汇总(钻石+大师级)的更多相关文章

  1. codevs 搜索题汇总(青铜+白银级)

    1792 分解质因数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze   题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描 ...

  2. codevs 搜索题汇总(黄金级)

    2801 LOL-盖伦的蹲草计划  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold   题目描述 Description 众所周知,LOL这款伟大的游戏,有个叫盖 ...

  3. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  4. bnuoj 33656 J. C.S.I.: P15(图形搜索题)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33656 [题解]:暴力搜索题 [code]: #include <iostream> # ...

  5. [HDU 2102] A计划(搜索题,典型dfs or bfs)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. 历年NOIP中的搜索题

    什么题目都不会做于是开始做搜索题. 然而我搜索题也不会做了. 铁定没戏的蒟蒻. 1.NOIP2004 虫食算 “对于给定的N进制加法算式,求出N个不同的字母分别代表的数字,使得该加法算式成立.输入数据 ...

  7. poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]

    地址. 很重要的搜索题.★★★ 吐槽:算是写过的一道码量比较大的搜索题了,细节多,还比较毒瘤.虽然是一遍AC的,其实我提前偷了大数据,但是思路还是想了好长时间,照理说想了半小时出不来,我就会翻题解,但 ...

  8. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

  9. POJ-2386Lake Counting,搜索题。。

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K           Description Due to recent rains, w ...

随机推荐

  1. RabbitMQ 发布订阅持久化

    RabbitMQ是一种重要的消息队列中间件,在生产环境中,稳定是第一考虑.RabbitMQ厂家也深知开发者的声音,稳定.可靠是第一考虑,为了消息传输的可靠性传输,RabbitMQ提供了多种途径的消息持 ...

  2. python全栈开发-Day11 迭代器、生成器、面向过程编程

    一. 迭代器 一 .迭代的概念 迭代器即迭代的工具,那什么是迭代呢? 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而 ...

  3. 移动端H5地图矢量SHP网格切分打包方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 与离线瓦片方案一样,同样是为了解决移动端网速和流量问题,但是却 ...

  4. 【详细】总结JavaWeb开发中SSH框架开发问题(用心总结,不容错过)

    在做JavaWeb的SSH框架开发的时候,遇到过很多的细节问题,这里大概记录下 我使用的IDE是Eclipse(老版本)三大框架:Spring4.Struts2.Hibernate5 1.web.xm ...

  5. RTMP消息详细介绍

    本文继上篇简单分析了RTMP协议如何进行通信进一步详细分析RTMP的消息都有哪些,以及这些消息有什么作用. 一.RMTP消息 由上一篇文章可知RTMP 消息有分成两个部分,一个是头部,一个是有效负载. ...

  6. x64系统安装ODAC问题经验分享

    64bit系统安装ODAC经验分享 背景: 最近项目里面有用到 WCF+Entity Framework+oracle 这个架构用过的朋友应该都知道,Entity Framework要通过ODAC的方 ...

  7. bug终结者 团队作业第三周

    bug终结者 团队作业第三周 团队展示 队名 bug终结者 队员风采: 杨京典 20162302 风格:先构建框架,在一 一实现,在实现的过程中不断测试和修改. 擅长的技术:拆分问题,使用相对简单的思 ...

  8. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  9. string类的简洁版实现

    说是原创,差不多算是转载了,我也是看了好多大牛的写法,大牛的建议,自己加一总结,形成代码: 实现一个简洁版的string类,我觉得,下面的也够了:另外需要参见另外的写法: http://blog.cs ...

  10. 关于 Ubuntu Linux 16.04中文版的 root 权限及桌面登录问题

    新接触 Ubuntu 的朋友大多会因为安装中没有提示设置 root 密码而不太清楚是什么原因. 起初 Ubuntu 团队希望安装尽可能的简单. 不使用 root , 在安装期间的两个用户交互步骤可以省 ...