杭电1027
来源:互联网 发布:网络主播工资表 编辑:程序博客网 时间:2024/06/16 02:00
大致思路:全排列计数,全排列问题可以参考:全排列问题
code:
#include <iostream>#include <string.h>#include <stdio.h>#define MAX2 1005using namespace std;int num;int array[MAX2];void swap(int *array,int i,int j){ int t; t=array[i]; array[i]=array[j]; array[j]=t;}void transverse(int array[],int m,int n){ while(m!=n) { swap(array,m,n); if(m+1==n) break; m++; n--; }}void reorder(int array[],int m,int num,int n){ int i,j; while(true) { for(i=m-1;i>=1;--i) { if(array[i]<array[i+1]) break; } if(i==0) { break; } for(j=m;j>i;j--) if(array[j]>array[i]) { break; } swap(array,i,j); transverse(array,i+1,m); num++; if(num==n) break; }}int main(){ int n,m; int i; while(scanf("%d%d",&n,&m)!=-1) { memset(array,0,sizeof(array)); num=1; for(i=1;i<=n;i++) { array[i]=i; } if(n>1) { if(m!=1) { reorder(array,n,num,m); } for(i=1;i<=n-1;i++) { cout<<array[i]<<' '; } cout<<array[n]<<endl; } else { cout<<array[1]<<endl; } } return 0;}
0 0
- 杭电 1027
- 杭电1027
- 杭电1027
- 杭电1027
- 杭电
- 杭电
- 杭电
- 杭电 1234 和 杭电 2115
- 杭电2056之Rectangles 杭电
- 杭电ACM1061Rightmost Digit
- 杭电2099 7.11
- 杭电ACM 1003
- 杭电 ACM 2016
- 杭电ACM1466
- 杭电ACM1003
- 杭电ACM1225
- 杭电ACM2023
- 杭电ACM2602
- 黑马程序员-面向对象总结(2)
- STL--F - Sequence(n*m->求最小的前m个和)
- 10 Specifying an Endpoint Configurator Class
- HDU-2049【递推】
- Android ActionBar 示例
- 杭电1027
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 11 The dukeetf2 Example Application
- C ++ 模板
- linux学习之cut命令参数解析--可以借鉴这种命令行参数格式
- 会场安排
- Lua脚本反编译入门之一
- HDU 1495 非常可乐
- 12 The websocketbot Example Application