临时文档9--dfs
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
int snum,n,m,sum,flag;
int map[35][35];
int hum[35][35];
char st[500];
int c,mmax;
int num[30],tt[30];
int so[30];
int v[30];
int judge()
{
int i;
for(i=1;i<=mmax;i++)
{
if(v[i] ==0)
return 0;
}
return 1;
}
void dfs(int x)
{
if(flag)
return;
if(judge()==1)
{
flag=1;
return ;
}
int i,j,k;
int tmp;
tmp=so[x] ; memset(num,0,sizeof(num));
for(j=1;j<=mmax;j++)
{
if(hum[x] [j] >0&&v[j] ==0)
{
for(k=1;k<=mmax;k++)
{
if(hum[j] [k] >0&&v[k] ==0)
num[j] ++;
}
tmp+=(so[j] /(num[j] +1));
}
}
// cout<<"tem=="<<tmp<<" "<<snum<<endl; if(tmp<snum)
{
// cout<<"1"<<endl;
v[x] =1;
for(j=1;j<=mmax;j++)
{
tt[j] =so[j] ;
// cout<<"hun[1][1]="<<hum[x][j]<<endl;
// cout<<"v[1]="<<v[j]<<endl;
if(hum[x] [j] >0&&v[j] ==0)
{
so[j] -=(so[j] /(num[j] +1));
}
}
// cout<<"2"<<endl;
for(i=1;i<=mmax;i++)
{
// if(i==x)dfs(i);
// else{
if(v[i] ==0)
dfs(i);
flag=judge();
//if(flag)return;
// cout<<"try"<<endl; // cout<<"try2"<<endl;
// }
}
// if(!flag){
v[x] =0;
// cout<<"try3"<<endl;
for(j=1;j<=mmax;j++)
{
// cout<<"try4"<<endl;
if(hum[x] [j] >0&&v[j] ==0)
{
so[j] +=(tt[j] /(num[j] +1));
}
}
// cout<<"try5"<<endl;
// }
}
// cout<<"try6"<<endl;
return;
} int main()
{
int i,j,t;
scanf("%d",&t);
while(t--)
{
cin>>n>>m;
mmax=0;
memset(hum,0,sizeof(hum));
for(i=1;i<=n;i++)
{
scanf("%s",st);
for(j=0;j<m;j++)
{
map[i] [j+1]=st[j] -'A'+1;
c=map[i] [j+1];
if(c>mmax)
mmax=c;
} }
for(i=1;i<=mmax;i++) scanf("%d",&so[i]);
scanf("%d",&snum); for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(i+1<=n&&map[i] [j] !=map[i+1][j] )
{
hum[map[i] [j] ][map[i+1][j] ]=hum[map[i+1][j] ][map[i] [j] ]=1;
}
if(j+1<=n&&map[i] [j] !=map[i] [j+1])
{
hum[map[i] [j] ][map[i] [j+1]]=hum[map[i] [j+1]][map[i] [j] ]=1;
}
if(i-1>0&&map[i] [j] !=map[i-1][j] )
{
hum[map[i] [j] ][map[i-1][j] ]=hum[map[i-1][j] ][map[i] [j] ]=1;
}
if(j-1>0&&map[i] [j] !=map[i] [j-1])
{
hum[map[i] [j] ][map[i] [j-1]]=hum[map[i] [j-1]][map[i] [j] ]=1;
}
}
}
flag=0;
// cout<<"1hhe"<<endl;
for(i=1;i<=mmax;i++)
{
if(flag==1)
break;
dfs(i);
}
// cout<<"hhe"<<endl;
if(flag)
{
printf("Saruman\n");
}
else
printf("Human\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
临时文档9--dfs的更多相关文章
- Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
添加排序属性: window.swaggerUi = new SwaggerUi({ ... apisSorter: "alpha", // can also ...
- WebAPI使用多个xml文件生成帮助文档
一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...
- WebAPI使用多个xml文件生成帮助文档(转)
http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the- ...
- VC多文档编程技巧(取消一开始时打开的空白文档)
VC多文档编程技巧(取消一开始时打开的空白文档) http://blog.csdn.net/crazyvoice/article/details/6185461 VC多文档编程技巧(取消一开始时打开的 ...
- 使用YUIDoc生成JS文档
其实YUIDoc主页已经写的比较清晰了,但有一些概念和细节再点出一些注意的地方. 目前最新的YUIDoc使用nodejs进行开发安装和使用都非常的方便. 我们只需要将我们的代码加上必要的注释,便可以很 ...
- SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- WORD文档中插入页码的问题
原文链接:http://www.360doc.com/content/11/0216/15/849254_93539436.shtml 一.页码从第二页开始1.选择“插入-页码”,打开“页码”对话框. ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
- js获取窗口滚动条高度、窗口可视范围高度、文档实际内容高度、滚动条离浏览器底部的高度
1.获取窗口可视范围的高度 //获取窗口可视范围的高度 function getClientHeight(){ var clientHeight=0; if(document.body.clientH ...
随机推荐
- linux下最大文件数
系统级:系统级设置对所有用户有效.可通过两种方式查看系统最大文件限制1 cat /proc/sys/fs/file-max 2 sysctl -a 查看结果中fs.file-max这项的配置数量如果需 ...
- 如何用asp.net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图
如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?
- Web调用ExE
把这个文件导入注册表,那么我们在浏览器中输入PrintLabel://1022,那么就会自动调用C:\\Program Files\\xxx有限公司\\Sellercube Label Maker\\ ...
- Java应用架构的演化之路
Java应用架构的演化之路 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现. 1. 不同系统不同语言之间的交互 现 在我们常见 ...
- js JSON对象属性
json对象是是一种用于原生json分析的对象,无法对其进行构造函数调用,用java术语 来说,它相当于能够直接使用类方法的工具类JSON对象的属性parse(text[,reviver]);对参数t ...
- PopupWindow的简单使用
测试代码: package com.zzw.testpopuwindows; import android.app.Activity; import android.graphics.Color; i ...
- android任意view爆炸效果--第三方开源--ExplosionField
犹如天女散花一样,爆炸散列,比较有趣.Android ExplosionField在github上的项目主页是:https://github.com/tyrantgit/ExplosionField ...
- android 模拟按键事件
模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...
- linux下的声卡驱动架构
1.linux下的声卡驱动架构主要分为OSS架构和ALSA架构. 2.OSS架构 OSS全称是Open Sound System,叫做开放式音频系统,这种早期的音频系统这种基于文件系统的访问方式,这意 ...
- java获取数据库里表的名字
一.Java方法 // 得到当前数据库下所有的表名 public void getTableNameByCon(Connection con) { try { DatabaseMetaData met ...