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. 在Python中使用Redis

    在Python中要使用Redis数据库,首先要安装redis 之前的博客中有写到在命令行模式下操作Redis数据库. 要在项目中使用的话可以这么做: 通过初始化 redis.Redis,得到返回的对象 ...

  2. [BZOJ 3813]奇数国

    3813: 奇数国 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 736  Solved: 416[Submit][Status][Discuss] ...

  3. JQuery操作option的添加、删除、取值

    1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 2. var checkTex ...

  4. C语言嵌套循环

    题目一:7-3 编程打印空心字符菱形 1.提交列表 2.设计思路: 1.定义整型变量循环控制变量i,j,k,x,y,z,e及菱形的高度height: 2.定义字符型变量letter: 3.输入字符型变 ...

  5. Beta冲刺-用户测试报告

    一.项目概述 1.1项目名称 高校学生征信系统 1.2项目简介 此项目基于SSH框架,力图为学生提供征信服务和信用相关的借款和申请活动.其中以信用统计和管理为主,信用使用为辅,构建出一个集信用收集和使 ...

  6. Django 基本设置

    建立django目录,为了独立区分app和主站的关系,需要把app完全和主站分离 app/views.py from django.shortcuts import render from djang ...

  7. Beta冲刺Day5

    项目进展 李明皇 今天解决的进度 服务器端还未完善,所以无法进行联动调试.对页面样式和逻辑进行优化 明天安排 前后端联动调试 林翔 今天解决的进度 完成维护登录态,实现图片上传,微信开发工具上传图片不 ...

  8. PostgreSQL 客户端乱码问题

    关于客户端和服务器端的乱码问题, POSTGRESQL字符集问题总结 总结的很详细, 特别棒. 这里让我头痛了很久的问题在于 终端 上字符编码的问题, 由于我的mbp上的 iterm2 的默认编码为 ...

  9. linux系统增加开机启动服务/应用

    操作 在/etc/init.d下新建示例脚本文件(customize.sh),该脚本会启动zookeeper服务.内容如下: #!/bin/sh /usr/local/zookeeper-/bin/z ...

  10. Crontab定时备份数据库

    1.创建一个shell脚本文件 cd /usr mkdir dbbackup cd /usr/dbbackup vim backup.sh echo "------------------- ...