hdu1010 奇偶剪枝

2024-09-09 07:18
文章标签 奇偶 剪枝 hdu1010

本文主要是介绍hdu1010 奇偶剪枝,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

恰好t时间到达



import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.StringTokenizer;public class Main {public static void main(String[] args) {new HDU1010().solve();}
}class HDU1010 {InputReader in = new InputReader(System.in);PrintWriter out = new PrintWriter(System.out);final int N = 10 ;int n , m  , upStep ;boolean[][] vis = new boolean[N][N] ;char[][] wall = new char[N][N] ;int[][] dir = {{-1,0},{0,-1},{1,0},{0,1}} ;boolean can(int x , int y){return 0 <= x && x < n && 0 <= y && y < m ;}int sx , sy , ex , ey ;void solve() {for(;;){n = in.nextInt() ;m = in.nextInt() ;upStep = in.nextInt() ;if(n == 0 && m == 0 && upStep == 0) break ;for(int i = 0 ; i < n ; i++) wall[i] = in.next().toCharArray() ;for(int i = 0 ; i < n ; i++){for(int j = 0 ; j < m ; j++){if(wall[i][j] == 'S'){sx = i ;  sy = j ;}else if(wall[i][j] == 'D'){ex = i ;  ey = j ;}}}for(int i = 0 ; i < n ; i++) Arrays.fill(vis[i] , false) ;vis[sx][sy] = true ;if(dfs(sx, sy, 0)) out.println("YES") ;else out.println("NO") ;} 	out.flush();}boolean dfs(int x , int y , int step){if(step > upStep)  return false ;if(x == ex && y == ey && step == upStep) return true ;if((upStep - step) % 2 != (Math.abs(x-ex) + Math.abs(y-ey)) % 2) return false ;for(int i = 0 ; i < 4 ; i++){int nx = x + dir[i][0] ;int ny = y + dir[i][1] ; if(can(nx, ny) && wall[nx][ny] != 'X' && ! vis[nx][ny]){vis[nx][ny] = true ;if(dfs(nx, ny, step+1)) return true ;vis[nx][ny] = false ;}}return false ;}}class InputReader {public BufferedReader reader;public StringTokenizer tokenizer;public InputReader(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = new StringTokenizer("");}private void eat(String s) {tokenizer = new StringTokenizer(s);}public String nextLine() {try {return reader.readLine();} catch (Exception e) {return null;}}public boolean hasNext() {while (!tokenizer.hasMoreTokens()) {String s = nextLine();if (s == null)return false;eat(s);}return true;}public String next() {hasNext();return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}public double nextDouble() {return Double.parseDouble(next());}public BigInteger nextBigInteger() {return new BigInteger(next());}}


这篇关于hdu1010 奇偶剪枝的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150508

相关文章

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

[论文笔记] LLM大模型剪枝篇——2、剪枝总体方案

https://github.com/sramshetty/ShortGPT/tree/main My剪枝方案(暂定):         剪枝目标:1.5B —> 100~600M         剪枝方法:                 层粒度剪枝                 1、基于BI分数选择P%的冗余层,P=60~80                 2、对前N%冗余层,

[论文笔记] LLM大模型剪枝篇——1、调研

Attention Is All You Need But You Don’t Need All Of It For Inference of Large Language Models LLaMA2在剪枝时,跳过ffn和跳过full layer的效果差不多。相比跳过ffn/full layer,跳过attention layer的影响会更小。 跳过attention layer:7B/13B从

高效判断奇偶数

出自《java解惑》 public static boolean isOdd(int value) {return (value & 0x1) != 0;}public static boolean isEven(int value) {return !isOdd(value);}

按奇偶排序数组 和 删除排序数组中的重复项

一:按奇偶排序数组 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 解法: public int[] sortArrayByParity(int[] A

hdu1010矩形图的搜索

/*给出地图和步数,在有墙的图内从起点到终点,判断能否在输入的步数内走完*/ #include<iostream>#include<cstdio>#include<algorithm>using namespace std;int sx,sy,ex,ey;int n,m;char map[10][10];int flag;int d[4][2]={0,1,1,0,0,-1,-

决策树__剪枝

首先剪枝(pruning)的目的是为了避免决策树模型的过拟合。因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进行划分,因此这会导致整棵树的分支过多,也就导致了过拟合。决策树的剪枝策略最基本的有两种:预剪枝(pre-pruning)和后剪枝(post-pruning): 预剪枝(pre-pruning):预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,若果当

hdu---1010 Tempter of the Bone (经典DFS,注意剪枝)

/*经典的dfs 主要考虑剪枝否则会超时           HDU 1010  */ # include<iostream> # include<cstdio> # include<cmath> # include<cstdlib> # include<cstring> # include<string> using namespace std; char

HDU1010 Temper of the Bone

刚刚上实验课,榨果汁。。。自觉学不到什么东西,就来到了机房,看看HDU上的题。一道搜索,其中包含了几个我从没想到过的剪枝方法,例如奇偶剪枝、路径剪枝还有在主函数中的一个剪枝,诸见代码与注释,虽然看起来没什么用的剪枝没准会遇到变态的测试数据导致最后的完蛋,所以只要能想到的剪枝就尽量写上去。 注:这题的代码来自标程。 /*Exe.Time Exe.Memory Code Len. La

力扣每日一题 划分为k个相等的子集 回溯 递归 细节剪枝

Problem: 698. 划分为k个相等的子集 👨‍🏫 参考题解 🍻 球选桶 class Solution {public boolean canPartitionKSubsets(int[] nums, int k) {int sum = 0;for (int i = 0; i < nums.length; i++)sum += nums[i];if (sum %