UVALive 6163(暴力枚举)
这道题我的做法就是枚举这四个数的所有排列所有运算所有计算顺序。
略有考验代码能力,不能漏掉情况,注意模块化的思想,一些功能写成函数调试的时候结构清晰好分析。
比赛时没有AC是对next_permutation()函数理解的不透,根本没有想到是没有从最小字典序开始枚举的问题。
就是next_permutation()函数是从当前顺序枚举到字典序最大的,而我开始时do里面的a数组不一定是字典序最小的,但是next_permutation()函数一定是从当前字典序往最大的枚举,所以漏掉了字典序很小的那些情况。所以我在do里面第一步加一个sort排序就AC了。
next_permutation()函数是从当前顺序一直枚举到字典序最大的(按字典序递增的顺序),没有更大的排列了就返回false,否则改了排列顺序以后返回true。
prev_permutation()函数是从当前顺序一直枚举到字典序最小的(按字典序递减的顺序),没有更小的排列了就返回false,否则改了排列顺序以后返回true。
这也是next和prev的意思,所谓“下一个”和“上一个”,就是字典序刚好比它大一点的排列和刚好比它小一点的排列。
平时学知识一知半解,比赛时就遭报应了。。。。。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
using namespace std;
#define INF 1000000000
#define eps 1e-8
#define pii pair<int,int>
#define LL long long int
int n,a[];
char in[];
bool deal();
bool cal(int i,int j,int k);
int g(int x,int y,int d);
int main()
{
//freopen("in1.txt","r",stdin);
//freopen("out.txt","w",stdout);
while(scanf("%d",&n)==&&n)
{
bool ans=true;
for(int i=; i<=n; i++)
{
scanf("%s",in);
if(ans==false)
continue;
else
{
a[]=in[]-'';
a[]=in[]-'';
a[]=in[]-'';
a[]=in[]-'';
if(deal()==false)//这四个数弄不出10
{
ans=false;
}
}
}
if(ans==true)
printf("TRUE\n");
else
printf("BUSTED\n");
}
//fclose(stdin);
//fclose(stdout);
return ;
}
bool deal()
{
sort(a,a+);//没有这句就WA了
do
{
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
for(int k=; k<; k++)
{
//三个for枚举所有运算符的组合
if(cal(i,j,k))
{
return true;
}
}
}
}
}
while(next_permutation(a,a+));//枚举四个数的所有排列
return false;
}
bool cal(int i,int j,int k)
{
int t1=g(a[],a[],i);
int t2=g(a[],a[],j);
int t3=g(a[],a[],k);
//接下来枚举所有运算次序
if(g(t1,t3,j)==)//k,i,j
return ;
else if( g( g(a[],t2,i),a[],k)== )//j,i,k
return ;
else if( g( g(t1,a[],j),a[],k)== )//i,j,k
return ;
/*else if( g( g(a[0],a[1],i),t3,j)==10 )//i,k,j
return 1;*/
else if( g( a[],g(t2,a[],k),i)== )//j,k,i
return ;
else if( g( a[],g(a[],t3,j),i)== )//k,j,i
return ;
else
return ;
}
int g(int x,int y,int d)
{
if(d==)
return x+y;
else if(d==)
return x-y;
else if(d==)
return x*y;
else
{
if(y)
return x/y;
else
return ;//分母为0不能进行除法,那这种情况肯定不行,那我就看成乘以0返回。
}
}
UVALive 6163(暴力枚举)的更多相关文章
- Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
- CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution (暴力枚举)
题意:求定 n 个数,求有多少对数满足,ai^bi = x. 析:暴力枚举就行,n的复杂度. 代码如下: #pragma comment(linker, "/STACK:1024000000 ...
- 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
/* 将给定的一个字符串分解成ABABA 或者 ABABCAB的形式! 思路:暴力枚举A, B, C串! */ 1 #include<iostream> #include<cstri ...
- HNU 12886 Cracking the Safe(暴力枚举)
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...
- 51nod 1116 K进制下的大数 (暴力枚举)
题目链接 题意:中文题. 题解:暴力枚举. #include <iostream> #include <cstring> using namespace std; ; ; ch ...
- Codeforces Round #349 (Div. 1) B. World Tour 最短路+暴力枚举
题目链接: http://www.codeforces.com/contest/666/problem/B 题意: 给你n个城市,m条单向边,求通过最短路径访问四个不同的点能获得的最大距离,答案输出一 ...
- bzoj 1028 暴力枚举判断
昨天梦到这道题了,所以一定要A掉(其实梦到了3道,有两道记不清了) 暴力枚举等的是哪张牌,将是哪张牌,然后贪心的判断就行了. 对于一个状态判断是否为胡牌,1-n扫一遍,然后对于每个牌,先mod 3, ...
- POJ-3187 Backward Digit Sums (暴力枚举)
http://poj.org/problem?id=3187 给定一个个数n和sum,让你求原始序列,如果有多个输出字典序最小的. 暴力枚举题,枚举生成的每一个全排列,符合即退出. dfs版: #in ...
- hihoCoder #1179 : 永恒游戏 (暴力枚举)
题意: 给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子.如果游戏可以玩10万次以上,输出INF, ...
随机推荐
- openCV学习——一、Mat类
一.Mat数据类型 在以下两个场景中使用 OpenCV 时,我们必须事先知道矩阵元素的数据类型: 使用 at 方法访问数据元素的时候要指明数据类型 做数值运算的时候,比如究竟是整数除法还是浮点数除法. ...
- React:快速上手(4)——掌握Redux(1)
React:快速上手(4)——掌握Redux 引入Redux 混乱的state管理 随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状 ...
- netty3---传统IO,NIO,nettyIO
传统: NIO: nettyIO: 每个服务生负责一个区域,每个服务生是一个线程.
- RPC数据通信
RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”.目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用.远程调用的应用场 ...
- Spring 之自动化装配 bean 尝试
[Spring之自动化装配bean尝试] 1.添加dependencies如下所示(不是每一个都用得到 <dependencies> <dependency> <grou ...
- 抗DDOS攻击
2016年10月的某天,“半个美国互联网”都瘫痪了,就是因为遭受了DDoS攻击——Twitter.GitHub.Spotify.Airbnb.Etsy等大量站点都因此受到影响.DNS服务提供商Dyn公 ...
- 配置内核 Makefile:1449: *** mixed implicit and normal rules. Stop.【转】
本文转载自:https://blog.csdn.net/bitowang/article/details/8446494 在编译内核的时候提示Makefile:1449: *** mixed impl ...
- Mac OS X 下部分Android手机无法连接adb问题之解决方案
[原文] 时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说 ...
- sklearn学习笔记之开始
简介 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了.scikit-learn简称sklearn,支持包括分类.回归.降维和聚类四大机器学习算法.还包含了特征 ...
- CNI:容器网络接口
CNI 简介 不管是 docker 还是 kubernetes,在网络方面目前都没有一个完美的.终极的.普适性的解决方案,不同的用户和企业因为各种原因会使用不同的网络方案.目前存在网络方案 flann ...