FZU 2107 Hua Rong Dao(暴力回溯)
dfs暴力回溯,这个代码是我修改以后的,里面的go相当简洁,以前的暴力手打太麻烦,我也来点技术含量..
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define m 4
int caocao[][] = {,,,,,,,};
int go[][][] = {{{,},{,}},{{,},{,}},{{,}}};
int kind[] = {,,};
int vis[][];
int n,tmp;
void work_caocao(int x,int y)
{
int tmpx,tmpy;
for(int i = ; i < ; i++)
{ tmpx = x + caocao[i][];
tmpy = y + caocao[i][];
vis[tmpx][tmpy] = ;
}
}
bool ok(int x,int y,int k)
{
for(int i = ; i < kind[k]; i++)
{
int tmpx,tmpy;
tmpx = x+go[k][i][],tmpy = y+go[k][i][];
if(vis[tmpx][tmpy]) return false;
if(tmpx > n || tmpy > m) return false;
if(tmpx <= || tmpy <= ) return false;
}
return true;
}
void set_vis(int x,int y,int k,int v)
{
for(int i = ; i < kind[k]; i++)
{
int tmpx,tmpy;
tmpx = x+go[k][i][],tmpy = y+go[k][i][];
vis[tmpx][tmpy] = v;
}
}
void dfs(int x,int y)
{
if(y == m+)
{
x++;
y = ;
}
if(x == n+)
{
tmp++;
return;
}
if(vis[x][y])dfs(x,y+);
for(int i = ; i < ; i++)
{
if(ok(x,y,i))
{
//cout<<x << " "<<y<<endl;
set_vis(x,y,i,);
dfs(x,y+);
set_vis(x,y,i,);
}
}
}
void set_caocao(int x,int y)
{
for(int i = x; i < n; i++)
for(int j = y; j < m; j++)
{
memset(vis,,sizeof(vis));
//cout<<i<<" "<<j<<endl;
work_caocao(i,j);
dfs(,);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int ans[];
ans[] = ,ans[] = ;
for(int i = ;i <= ;i++)
{
n = i;
tmp = ;
set_caocao(,);
ans[i] = tmp;
}
int nn;
scanf("%d",&nn);
printf("%d\n",ans[nn]);
}
}
FZU 2107 Hua Rong Dao(暴力回溯)的更多相关文章
- ACM: FZU 2107 Hua Rong Dao - DFS - 暴力
FZU 2107 Hua Rong Dao Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- FZU 2107 Hua Rong Dao(dfs)
Problem 2107 Hua Rong Dao Accept: 318 Submit: 703 Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...
- fzu 2107 Hua Rong Dao(状态压缩)
Problem 2107 Hua Rong Dao Accept: 106 Submit: 197 Time Limit: 1000 mSec Memory Limit : 32768 K ...
- foj Problem 2107 Hua Rong Dao
Problem 2107 Hua Rong Dao Accept: 503 Submit: 1054Time Limit: 1000 mSec Memory Limit : 32768 K ...
- FZOJ Problem 2107 Hua Rong Dao
...
- uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯
题目:跟N皇后问题一样,不考虑对角冲突,但考虑墙的存在,只要中间有墙就不会冲突. N皇后一行只能放一个,而这题不行,所以用全图暴力放棋,回溯dfs即可,题目最多就到4*4,范围很小. 刚开始考虑放一个 ...
- Chinese Mahjong UVA - 11210 (暴力+回溯递归)
思路:得到输入得到mj[]的各个牌的数量,还差最后一张牌.直接暴力枚举34张牌就可以了. 当假设得到最后一张牌,则得到了的牌看看是不是可以胡,如果可以胡的话,就假设正确.否者假设下一张牌. 关键还是如 ...
- Magic FZU - 2280 无脑HASH暴力
Kim is a magician, he can use n kinds of magic, number from 1 to n. We use string Si to describe mag ...
- UVaLive 6585 && Gym 100299F Draughts (暴力+回溯)
题意:给定一个 10*10的矩阵,每一个W可以跳过一个B向对角走到#并把B吃掉,并且可以一直跳直到不能动为止,现在是W走的时候,问你最多吃几个B. 析:直接暴力+回溯,深搜就好. 代码如下: #pra ...
随机推荐
- js函数大全(2)
原文地址:http://phperbar.blog.163.com/blog/static/162596182201032935815391/ 1.常规函数 javascript常规函数包括以下9个函 ...
- Web开发人员不要错过的60款用户界面设计工具(下)
41. Snipplr 包含最新的脚本和jQuery技术资源库. 42. Midori Midori是一个超轻量级的JavaScript框架,可使用CSS选择器快速访问页面上对应的元素. 43. ro ...
- nefu 1029 字符串
Description 给定一个字符串,现在要你从这个字符串中找到第一个只出现一次的字符 ,很简单吧! 快敲代码,动作! Input 多组输入,每行一个字符串(小写字母a~z)字符串长度不超过50 O ...
- 手机端的META你知道多少?
一.天猫 <title>天猫触屏版</title> <meta content="text/html; charset=utf-8" http-equ ...
- Redis配置文件 翻译 V3.2版本
# Redis配置文件例子. # # 注意:为了能读取到配置文件,Redis服务必须以配置文件的路径作为第一个参数启动 # ./redis-server /path/to/redis.conf # 关 ...
- linux 进程监控和自动重启的简单实现(转)
目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重 ...
- SmtpDlg 调用SMTP
// SmtpDlg.h : 头文件 // #pragma once #include "afxwin.h" #include "string" using n ...
- nm applet disable
http://support.qacafe.com/knowledge-base/how-do-i-prevent-network-manager-from-controlling-an-interf ...
- Java学习笔记之基于TCP协议的socket
可以一直输入,而不是一问一答: 开两个线程,一个负责收,一个负责发. 1.先运行: package com.zr.javase0825; import java.io.BufferedReader; ...
- Spring Boot 系列教程6-全局异常处理
@ControllerAdvice源码 package org.springframework.web.bind.annotation; import java.lang.annotation.Ann ...