POJ2200+全排列模拟
简单。
手动的实现全排列
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int maxn = ; struct node{
char a,b,aa;
int c,d,val;
}p[ ],temp; struct node2{
node tt[];
int most;
}ans[ ]; int cmp( node a,node b ){
return a.val<b.val;
} int cmp2( node2 a,node2 b ){
return a.most<b.most;
} int cnt; int value( char ch ){
if( ch=='C' ) return ;
else if( ch=='D' ) return ;
else if( ch=='H' ) return ;
else if( ch=='S' ) return ;
if( ch=='A' ) return ;
else if( ch>=''&&ch<='' ) return (ch-'');
else if( ch=='J' ) return ;
else if( ch=='Q' ) return ;
else if( ch=='K' ) return ;
} bool judge(){
if( p[].b!=p[].b ) return false; if( p[].val<=p[].val&&p[].val<=p[].val ){
if( p[].val>=p[].val ) {//pos = 4
if( p[].aa!='#' ){//
if(p[].a=='A' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='' ) return true;
else return false;
}
}
else {//pos = 1
if( p[].aa!='#' ){//
if(p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='A' ) return true;
else return false;
}
}
} if( p[].val<=p[].val&&p[].val<=p[].val ){
if( p[].val>=p[].val ) {//pos = 6
if( p[].aa!='#' ){//
if(p[].a=='' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='A' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='' ) return true;
else return false;
}
}
else {//pos = 3
if( p[].aa!='#' ){//
if(p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='A' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='' ) return true;
else return false;
}
}
} if( p[].val<=p[].val&&p[].val<=p[].val ){
if( p[].val>=p[].val ) {//pos = 5
if( p[].aa!='#' ){//
if(p[].a=='' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='A' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='' ) return true;
else return false;
}
}
else {//pos = 2
if( p[].aa!='#' ){//
if(p[].a=='Q' ) return true;
else return false;
}
else if( p[].a=='A' ) {//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='' ) return true;
else return false;
}
else if( p[].a=='' ){//
if( p[].a=='J' ) return true;
else return false;
}
else if( p[].a=='J' ){//J
if( p[].a=='K' ) return true;
else return false;
}
else if( p[].a=='Q' ){//Q
if( p[].a=='A' ) return true;
else return false;
}
else if( p[].a=='K' ){//K
if( p[].a=='' ) return true;
else return false;
}
}
}
} void solve( int l,int r ){
if( l>r&&cnt== ){
if( judge()==true ) {
ans[ cnt ].tt[] = p[];
ans[ cnt ].tt[] = p[];
ans[ cnt ].tt[] = p[];
ans[ cnt ].tt[] = p[];
ans[ cnt ].tt[] = p[];
ans[ cnt ].most = p[].val+*p[].val+*p[].val+*p[].val+*p[].val;
cnt++;
}
return ;
}
for( int i=l;i<=r&&cnt==;i++ ){
temp = p[i];
p[i] = p[l];
p[l] = temp;
solve( l+,r );
if( cnt> ) return ;
temp = p[i];
p[i] = p[l];
p[l] = temp;
}
} int main(){
int ca = ;
int T;
scanf("%d",&T);
while( T-- ){
printf("Problem %d: ",ca++);
char s[ ];
cnt = ;
for( int i=;i<;i++ ){
scanf("%s",s);
if( strlen(s)== ) {
p[i].a = '';
p[i].aa = '';
p[i].b = s[];
p[i].c = ;
p[i].d = value( s[] );
p[i].val = *p[i].c+p[i].d;
}
else {
p[i].a = s[];
p[i].b = s[];
p[i].aa = '#';
p[i].c = value(s[]);
p[i].d = value(s[]);
p[i].val = *p[i].c+p[i].d;
}
}
sort( p,p+,cmp );
solve( , );
/*
sort( ans,ans+cnt,cmp2 );
p[0] = ans[0].tt[0];
p[1] = ans[0].tt[1];
p[2] = ans[0].tt[2];
p[3] = ans[0].tt[3];
p[4] = ans[0].tt[4];
*/
//printf("\ncnt=%d\n",cnt);
for( int i=;i<;i++ ){
if(i==) {
if( p[i].aa=='#' ) printf("%c%c",p[i].a,p[i].b);
else printf("10%c",p[i].b);
}
else{
if( p[i].aa=='#' ) printf(" %c%c",p[i].a,p[i].b);
else printf(" 10%c",p[i].b);
}
}
printf("\n");
}
return ;
}
代码有点长。。有点啰嗦。。
POJ2200+全排列模拟的更多相关文章
- UVa 10012 - How Big Is It? 堆球问题 全排列+坐标模拟 数据
题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_per ...
- LeetCode Permutations II (全排列)
题意: 给出n个元素(可能有重复的),请产生出所有的全排列. 思路: 同版本1的有点不同,这次有可能含有重复的元素,很容易就TLE,节省时间才是关键点. 如果将一个序列中两个相同的元素交换,这个序列是 ...
- 【20170521校内模拟赛】热爱生活的小Z
学长FallDream所出的模拟赛,个人感觉题目难度还是比较适中的,难度在提高+左右,可能比较接近弱省省选,总体来讲试题考查范围较广,个人认为还是很不错的. 所有试题如无特殊声明,开启-O2优化,时限 ...
- 【洛谷P1706全排列问题】
题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 代码如下: #include<iostream>#include<cstd ...
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- DFS 之 全排列
题目描述输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 我们可以模拟出n个盒子和n张卡片,我们需要将n张卡片分别放到n个盒子里,且每个盒子只能放1张卡 ...
- 2018 蓝桥杯省赛 B 组模拟赛(五)
A模拟 代码1 #include<bits/stdc++.h> using namespace std; int n = 101; int a[120][120]; int ans = 0 ...
- Codeforces Round #398 (Div. 2) A B C D 模拟 细节 dfs 贪心
A. Snacktower time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 算法训练 Balloons in a Box (枚举,模拟)
问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可以放置气球的位置.在一个点上放置一个气球,就是以这个 ...
随机推荐
- 如何使用jQuery设置背景的透明度
如何使用jQuery设置背景的透明度:使用CSS可以设置背景的透明度,具体方法可以参阅CSS如何设置div背景透明度且兼容性良好,不过使用CSS设置透明度没有动态效果,如果实现也比较困难,下面就介绍一 ...
- MidPayinfoVO
package nc.vo.arap.payablebill; import nc.vo.pub.SuperVO; import nc.vo.pub.lang.UFDate; import nc.vo ...
- scala中的call-by-name和call-by-value
http://www.jianshu.com/p/93eefcb61d4f val和def的区别 在scala中,可以用val和def前缀来定义变量,例如: val x = 1 def y = &qu ...
- 第十六篇、MBprogressHUD的使用和获取当前的控制器
简介: 在开发应用的时候,为了更好的增加用户的体验,常常在客户端向服务端请求数据的时候,在适当的地方加上非模态HUD,让用户可以可以知道当前的进度,稍作等待. MBProgressHUD 第三方框架G ...
- navagationController 的子控制器如何取消右滑返回
1.首先在navagationController的某个控制器中 遵守:UIGestureRecognizerDelegate 2.在viewDidload中设置: self.navigationCo ...
- 初尝Windows 下批处理编程
本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...
- springmvc学习(三)
第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...
- 2016/7/7 自定义函数copy
题目:输入整数n(n<=10000),表示接下来将会输入n个实数,将这n个实数存入数组a中.请定义一个数组拷贝函数将数组a中的n个数拷贝到数组b中. 分析: (1)输入n,再输入n个实数存入数组 ...
- Java write And read Demo
以下代码主要实现java中的读文件 和写入文件,练习一下流操作. 要点: 1.读取文件时,一定要加编码格式,否则中文乱码 import java.io.BufferedReader;import ja ...
- wifidog编译到openwrt
首先敲一下 cd 命令,定位到自己的用户目录, 然后 mkdir openwrt 新建一个openwrt文件夹,然后开始装openwrt的编译用到的工具, sudo apt-get install g ...