取数字问题

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

给定M×N的矩阵,当中的每一个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N)。每一步仅仅可以向右或者向下,而且不可以走出矩阵的范围。你所经过的方格里面的数字都必须被选取,请找出一条最合适的道路,使得在路上被选取的数字之和是尽可能小的正整数。

输入

输入第1行是两个整数M和N,(2<=M<=10,2<=N<=10),分别表示矩阵的行和列的数目。接下来M行,每行包含N个整数,就是矩阵中的每一行的N个元素。

输出

输出仅仅有一行。就是一个整数,表示所选道路上数字之和所能达到的最小正整数。假设不能达到不论什么正整数,输出-1。

演示样例输入

2 2
0 2
1 0

演示样例输出

1
简单暴搜。。
数据太弱。

。差点儿不用剪枝。。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
#include <cctype>
#include <cstring>
#include <string>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
#define ll long long
const int maxn = 11;
const int INF = 0x3f3f3f3f;
int ans, m, n, ma[11][11];
void dfs(int x, int y, int sum)
{
if (sum > ans) {
return ;
} if (x == n && y == m) {
if (sum > 0 && ans > sum) {
ans = sum;
} return ;
} if (x < n) {
dfs(x + 1, y, sum + ma[x + 1][y]);
} if (y < m) {
dfs(x, y + 1, sum + ma[x][y + 1]);
} }
int main()
{ scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
scanf("%d", &ma[i][j]);
} ans = INF;
dfs(1, 1, ma[1][1]); if (ans != INF) {
printf("%d\n", ans);
} else {
puts("-1");
} return 0;
}

SDUT 1304-取数字问题(DFS)的更多相关文章

  1. 取数字(dp优化)

    取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le ...

  2. python取数字、字母

    python取数字.字母 有一串字符串“lxa7YzU”,其中有大写字母.小写字母和数字,现编写一脚本使得实现以下功能: 将这串字符串中的数字.大写字母.小写字母分别取出来并进行分类. 脚本如下所示: ...

  3. [SCOI2010]幸运数字 [容斥原理 dfs]

    题意:"幸运号码"是十进制表示中只包含数字6和8的那些号码,求\([l,r]:r \le 10^10\)之间"幸运号码"的倍数个数 发现幸运号码貌似很少唉,去掉 ...

  4. BZOJ 1853 幸运数字(容斥原理+dfs)

    题意:求闭区间内能被6和8组成的数字整除的数目.n<=1e11. 我们可以预处理出这些6和8组成的数字,大概2500个,然后排除一些如88,66的情况.这样大概还剩下1000个. 转化为[0,r ...

  5. SDUT 1570 C 旅行(DFS)

    点我看题目 题意 : 中文不详述. 思路 :就是DFS一下,只要到达终点条数就加1,然后再注意一下方向,因为我就是没注意方向WA了,只能向上向右走,x是行,所以向上是x-1,向右是y+1,因为我没弄好 ...

  6. HDU 1172 猜数字(DFS)

    猜数字 Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  7. SDUT 1265-马停下过河卒(DFS)

    马拦过河卒 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit3000ms Memory Limit 65536K ...

  8. Codeforces 455A Boredom 取数字的dp

    题目链接:点击打开链接 给定一个n长的序列 删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失.即无法获得这2个数的分数 问最高得分. 先统计每一个数出现的次数.然后dp一 ...

  9. [sdut] 1400 马的走法 dfs

    Problem Description 在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字).如果马的初始位置坐 ...

  10. yzoj P1948 取数字问题

    题意 sb题目,不多说,爆搜就能过. 代码 #include<bits/stdc++.h> using namespace std; int n,m,ans=1<<30,a[1 ...

随机推荐

  1. JVM调优总结(十一)-反思

    垃圾回收的悖论 所谓“成也萧何败萧何”.Java的垃圾回收确实带来了很多好处,为开发带来了便利.但是在一些高性能.高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈.目前JDK的垃圾回收算法,始终 ...

  2. Swift - 使用NSURLSession同步获取数据(通过添加信号量)

    过去通过 NSURLConnection.sendSynchronousRequest() 方法能同步请求数据.从iOS9起,苹果建议废除 NSURLConnection,使用 NSURLSessio ...

  3. Linux OpenCV读取视频失败,cvCreateFileCapture失败的解决

    背景: 近期想在嵌入式平台上开发QT+Opencv,无料PC机上编写的OpenCV程序老是打不开视频. 開始提示:OpenCV Error: Bad argument (Array should be ...

  4. Join的实现步骤 以及连接的概念

    Join的实现步骤  以及连接的概念 我们常说连接有三种,即 交叉连接.内连接.外连接,这三者的概念很容易模糊,现在我们先放下概念,搞清楚完整连接实现的步骤: 一个完整的连接有三个步骤:.做笛卡儿积: ...

  5. SignalR 聊天室实例详解(服务器端推送版)

    翻译自:http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room  (在这里可以下载到实例的源码) Asp.Net Si ...

  6. ubuntu: root用户

    ubuntu怎么设置root用户  http://blog.csdn.net/chenping314159/article/details/7561339 创建root帐号: 在安装系统时,root账 ...

  7. 图解单片机8位PWM、16位PWM中“位”的含义!

    今天 发现很多同学 搞不懂单片机的pwm中的位表示什么意思,如很多同学会问“8位pwm.16位pwm是什么意思啊,它们有什么区别啊,其中的‘位’表示什么意思啊”.对于这些问题,今天就给大家解释下,由于 ...

  8. Java学习——何为JNDI

    曾记得在做机房收费系统的时候就接触到了API,由于它的功能非常强大,可是自己对它却不怎么了解.所以当时是又爱又怕.现在,一路走来才明确,事实上它就是一组接口.仅仅要我们去了解它就会发现.它事实上也没想 ...

  9. Java内部类——成员内部类

    成员内部类的意思就是,一个外层类里面包含着一个非static的class,举例如下: class OuterClass { //变量,函数定义... class InnerClass { //变量,函 ...

  10. 调用QQ截图

    var SHExecInfo: SHELLEXECUTEINFO; begin //截图前隐藏主程序窗口 Form1.Hide; //等待截图执行完成 SHExecInfo.cbSize := siz ...