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 ...
随机推荐
- 用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序
经常创建项目的时候,采用空项目,那么编译成功后,最好修改下sbusystem . 链接器->系统->子系统->控制台或windows 后面的"最低版本"是5.01
- IP子网掩码划分及设置
IP子网掩码划分及设置 定长子网掩码: 一.子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是 ...
- 一个Cmake的例子
命令查询列表:http://www.cmake.org/cmake/help/v3.2/manual/cmake-commands.7.html # # Official dependency num ...
- nefu 446 今年暑假不AC(贪心)
Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...
- JqGrid动态改变列名
setLabel colname, data, class, properties jqGrid对象 给指定列设置一个新的显示名称.colname:列名称,也可以是列的位置索引,从0开始:data:列 ...
- iOS:UIWebView scrollView 的分页滑动问题
最近在弄一个native webview+html的项目,感觉这种尝试还是挺不错的,特被是适合内容类app.如杂志.电子书等.其实native搭的就是一个框架,主体还是在html的内容上,所以花在ht ...
- TransactionScope的使用
本文导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我们所希望的是能够在整个这个方法定义为一个事务,TransactionSco ...
- gnome3
http://askubuntu.com/questions/67753/how-do-i-add-an-application-to-the-dash https://wiki.gnome.org/ ...
- [Python]网络爬虫(四):Opener与Handler的介绍和实例应用
在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对象response(或者HTTPError实例)有两个很有用的方法info() ...
- iOS label换行 自适应
//自动折行设置 addressDetailLab.lineBreakMode = NSLineBreakByWordWrapping; addressDetailLab.numberOfLines ...