您的位置:首页 > 其它

康托展开-简单应用

2017-04-05 20:30 183 查看
#include <iostream>
#include <string.h>
#include <string>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;

const int PermSize = 5;
int factory[PermSize] = { 1, 1, 2, 6, 24};  //阶乘结果

int a[101];

void cantor_big(int a[])
{
int sum=0;
for(int i=0;i<4;i++)
{
int counted=0;
for(int j=i+1;j<4;j++) if(a[i]>a[j]) counted++;
sum+=counted*factory[PermSize-i-2];
}
for(int i=0;i<4;i++) cout<<a[i];
cout<<"是第"<<sum+1<<"个数"<<endl;
}
int main()
{
while(1)
{
for(int i=0;i<4;i++) cin>>a[i];
cantor_big(a);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: