简单。

手动的实现全排列

 #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+全排列模拟的更多相关文章

  1. UVa 10012 - How Big Is It? 堆球问题 全排列+坐标模拟 数据

    题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_per ...

  2. LeetCode Permutations II (全排列)

    题意: 给出n个元素(可能有重复的),请产生出所有的全排列. 思路: 同版本1的有点不同,这次有可能含有重复的元素,很容易就TLE,节省时间才是关键点. 如果将一个序列中两个相同的元素交换,这个序列是 ...

  3. 【20170521校内模拟赛】热爱生活的小Z

    学长FallDream所出的模拟赛,个人感觉题目难度还是比较适中的,难度在提高+左右,可能比较接近弱省省选,总体来讲试题考查范围较广,个人认为还是很不错的. 所有试题如无特殊声明,开启-O2优化,时限 ...

  4. 【洛谷P1706全排列问题】

    题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 代码如下: #include<iostream>#include<cstd ...

  5. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  6. DFS 之 全排列

    题目描述输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 我们可以模拟出n个盒子和n张卡片,我们需要将n张卡片分别放到n个盒子里,且每个盒子只能放1张卡 ...

  7. 2018 蓝桥杯省赛 B 组模拟赛(五)

    A模拟 代码1 #include<bits/stdc++.h> using namespace std; int n = 101; int a[120][120]; int ans = 0 ...

  8. 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 ...

  9. 算法训练 Balloons in a Box (枚举,模拟)

    问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可以放置气球的位置.在一个点上放置一个气球,就是以这个 ...

随机推荐

  1. 优雅的使用 PhpStorm 来开发 Laravel 项目

    [目录] Prerequisites plugin installation and configuration 1 Ensure Composer is initialized 2 Install ...

  2. php 统计在线人数,今日访问量,总访问量

    直接复制到本站点下测试即可 代码如下: <?php header('Content-type: text/html; charset=utf-8');$online_log = "co ...

  3. JS学习笔记——标准对象

    一.对象 在js中万物皆对象. 二.对象类型 number.string.boolean.undefined.function.object等 用typeof来获取对象的类型 如: alert( ty ...

  4. Base64 编码

    Base64 字母表 Base64 编码将一个 8 位字节序列拆成 6 位的片段,并为每个 6 位的片段分配一个字符,这个字符是 Base64 字母表中的 64 个字符之一. Wert Zeichen ...

  5. 【高级JEE技术】JMX

    JMX即Java Manager Extentin(java 管理扩展)一种动态改变javabean属性值的技术,具体应用场景可以有很多.比如使用JMX作为线上应用的开关,在做一些新老系统改造的时候 ...

  6. ASP怎样获得代码中第一张图片地址

    '把pattern 又修改了下 'code要检测的代码 'http://www.knowsky.com/asp.asp 'leixing html 或者ubb 'nopic 代码没有图片时默认值 fu ...

  7. GestureDetector类及其用法

    转载子:http://www.cnblogs.com/rayray/p/3422734.html 项目中有需求:针对一个imageview,点击需要查看大图,左右滑动能执行翻页. 自己对手势这一块并不 ...

  8. Android studio 删除Module、project

    很简单: 1 选中项目右键:Open Module Setting 2 选择要删除的项目,点击“-”即可

  9. 关于TouchEvent中出现异常:MessageQueue-JNI问题

    Tag:MessageQueue-JNI Exception dispatching input event. Exception in MessageQueue callback: handleRe ...

  10. Android系统简介(中):系统架构

    Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries  & Android Runtime.Linux  ...