hdu 1716 排列2
来源:互联网 发布:北京精雕编程软件下载 编辑:程序博客网 时间:2024/05/17 04:43
http://acm.hdu.edu.cn/showproblem.php?pid=1716
坑爹的格式,害了我调了好几个小时!你妹!
这道题就是可重集的排列问题,利用递归求解,类似的详见算法竞赛入门经典118页!~~
#include <iostream>#include <algorithm>using namespace std;int flag,flag_fir;void print_permutation(int n,int *P,int *A,int cur){int i,j;if(cur==n){if(A[0]){if(A[0]!=flag){if(!flag_fir)cout<<endl;flag_fir=0; flag=A[0];}else cout<<" ";for(i=0;i<n;i++) cout<<A[i];}}else for(i=0;i<n;i++)if(!i||P[i]!=P[i-1]){int c1=0,c2=0;for(j=0;j<cur;j++) if(A[j]==P[i]) c1++;for(j=0;j<n;j++) if(P[j]==P[i]) c2++;if(c1<c2){A[cur]=P[i];print_permutation(n,P,A,cur+1);}}}int main(){int n,A[4],cur;int P[4];int flag_shit=1;//这道题格式太shit了!!! int S[1000][4];int i;for(i=0;;i++){cin>>S[i][0]>>S[i][1]>>S[i][2]>>S[i][3];if(!(S[i][0]||S[i][1]||S[i][2]||S[i][3]))break;}for(int k=0;k<i;k++) {P[0]=S[k][0]; P[1]=S[k][1];P[2]=S[k][2];P[3]=S[k][3]; flag=-1; flag_fir=1; sort(P,P+4);cur=0;print_permutation(4,P,A,cur);cout<<endl;if(k!=i-1) cout<<endl; }return 0;}
- HDU 1716 - 排列2
- HDU 1716 排列2
- hdu 1716 排列2
- HDU 1716/排列2
- HDU 1716 排列2
- hdu 1716 排列2
- HDU 1716 排列2
- hdu 1716 排列2
- hdu 1716 排列2
- hdu 1716排列2
- HDU 1716 排列2
- HDU 1716 排列2
- hdu--1716--排列2
- HDU 1716 排列2
- HDU 1716 排列2
- hdu 1716 排列2
- hdu 1716排列2
- HDU 1716 排列2
- 实现一个记住密码的Android登陆界面
- cocos2d-x 2.0.1 的根据例子写个小球碰撞板块反弹例子
- scribe 简单使用java
- Morphia 成功支持 GridFS
- 宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等
- hdu 1716 排列2
- Hello,Go!
- Android Activity总结
- 解决Android横竖屏切换数据丢失问题
- 字符串截取小技巧
- DataSet 写入方式测试中
- 在.net开发中使用Log4Net组件
- prim算法
- Zookeeper之Zab协议介绍(一)