栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3459 Extraordinary 24

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3459 Extraordinary 24

#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<map>#include<set>#include<vector>#include<queue>using namespace std;typedef long long lld;#define pb push_back#define mp make_pair#define X first#define Y second#define inf 0xfffffff#define eps 1e-16bool ok[100010];int s[110];int a[110];int id[110];int get_id(int a[]){int base=1;int tmp=0;for(int i=0;i<4;i++){tmp+=(a[i]-1)*base;base*=10;}return tmp;}double val[8];bool vis[8];bool judge(int dep){if(dep == 7)return fabs(val[6]-24.0) < eps;for(int i=0;i<dep;i++)if(!vis[i])for(int j=i+1;j<dep;j++)if(!vis[j]){vis[i]=vis[j]=true;val[dep]=val[i]+val[j];if(judge(dep+1))return true;val[dep]=val[i]-val[j];if(judge(dep+1))return true;val[dep]=-val[i]+val[j];if(judge(dep+1))return true;val[dep]=val[i]*val[j];if(judge(dep+1))return true;if(fabs(val[j]) > eps){val[dep]=val[i]/val[j];if(judge(dep+1))return true;}if(fabs(val[i]) > eps){val[dep]=val[j]/val[i];if(judge(dep+1))return true;}vis[i]=vis[j]=false;}return false;}void init(){for(s[0]=1;s[0]<=10;s[0]++)for(s[1]=s[0];s[1]<=10;s[1]++)for(s[2]=s[1];s[2]<=10;s[2]++)for(s[3]=s[2];s[3]<=10;s[3]++){memset(vis,false,sizeof(vis));for(int i=0;i<4;i++)val[i]=s[i];if(judge(4)){for(int i=0;i<4;i++)id[i]=i;do{for(int i=0;i<4;i++)a[i]=s[id[i]];ok[get_id(a)]=true;}while(next_permutation(id,id+4));}}}char str[10];struct Card{int s;bool ok,change;void in(){scanf("%d",&s);scanf("%s",str);if(str[0] == 'r')change=false;elsechange=true;ok=true;}};Card sm[10];Card zj[10];Card f[10];int get_id(Card a[]){int base=1;int tmp=0;for(int i=0;i<4;i++){tmp+=(a[i].s-1)*base;base*=10;}return tmp;}int n,m;bool dfs(int dep){if(dep%2 == 0){if(ok[get_id(f)]){if(dep != 0)return true;if(!dfs(dep+1))return true;}for(int i=0;i<n;i++){if(!sm[i].ok)continue;for(int k=0;k<4;k++){Card save=f[k];f[k]=sm[i];sm[i].ok=false;bool flag=dfs(dep+1);sm[i].ok=true;f[k]=save;if(!flag)return true;}}return false;}else{if(!ok[get_id(f)])return true;for(int i=0;i<m;i++){if(!zj[i].change)continue;for(int k=0;k<4;k++){swap(zj[i],f[k]);bool flag=dfs(dep+1);swap(zj[i],f[k]);if(!flag)return true;}}return false;}}int main(){memset(ok,false,sizeof(ok));init();int cas;scanf("%d",&cas);for(int cc=1;cc<=cas;cc++){for(int i=0;i<4;i++)f[i].in();scanf("%d %d",&n,&m);for(int i=0;i<n;i++)sm[i].in();for(int i=0;i<m;i++)zj[i].in();if(dfs(0))printf("Sima Yi Wins!n");elseprintf("Zhang Jiao Wins!n");}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号