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 (枚举,模拟)
问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可以放置气球的位置.在一个点上放置一个气球,就是以这个 ...
随机推荐
- 301页面转向 php
新建301.php页面,在程序入口文件index.php引用301.php页面 301.php内容如下,仅用于参考: <?php$the_host = $_SERVER['HTTP_HOST'] ...
- css扁平化博客学习总结(四)content代码实现
1.根据功能,把不同的部分写出来,方便扩展 <div class="content"><!-- 内容开始 --> <section class=&qu ...
- 异步请求---Get
前端 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &l ...
- SQL Server高级内容之表表达式和复习
1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询. (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...
- 一步一步搭建 OAuth 认证服务器
http://www.fising.cn/2011/03/%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E6%90%AD%E5%BB%BA-oauth-%E8%AE%A4% ...
- 第九篇、UITabbar增加类别用来标红点
1.系统中只有设置bage的方式,设置为nil也是为一个红点,但是很大,并不是我们需要的 2.扩充标红点的方法 (常用于有新的动态提示标志) #import <UIKit/UIKit.h> ...
- SQL获取数据库中表的列名和列类型
select column_name as [字段名],data_type as [数据类型] from information_schema.columns where table_name='表名 ...
- Mac OS X下GnuPlot的安装和配置(无法set term png等图片输出)
今天使用gitstats分析git repo的活动信息,发现其内部使用gnuplot,结果发现无法生成png图片,进入gnuplot的shell发现无法设置png格式输出.如下 gnuplot> ...
- 51nod1174区间中最大的数
1174 区间中最大的数基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中, ...
- Javascript 计算分页
var getPageData = function (last_page, current_page) { var numberLinks = []; var i = 0; for (i; i &l ...