Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 以非递增顺序打印整数数组的排列_Sorting_Permutation - Fatal编程技术网

Sorting 以非递增顺序打印整数数组的排列

Sorting 以非递增顺序打印整数数组的排列,sorting,permutation,Sorting,Permutation,给定一个整数数组。如何使用程序打印数组中数字的所有排列。输出应按非递增顺序排序。例如,对于数组{12,4,66,8,9},输出应为: 9866412 9866124 9846612 .... .... 1246689 #包括 #包括 #包括 #包括 使用名称空间std; 整数位数=0; 整数x[10000000]; int countx=0; int finddigits(int num) { int计数器=0; while(num!=0) { num=num/10; 计数器++;

给定一个整数数组。如何使用程序打印数组中数字的所有排列。输出应按非递增顺序排序。例如,对于数组{12,4,66,8,9},输出应为:

9866412

9866124

9846612

....

....

1246689
#包括
#包括
#包括
#包括
使用名称空间std;
整数位数=0;
整数x[10000000];
int countx=0;
int finddigits(int num)
{
int计数器=0;
while(num!=0)
{
num=num/10;
计数器++;
}
返回计数器;
}
整数位数(整数*a,整数大小)
{
整数计数=0;

对于(int i=0;我得到一个数组排列,请参见。此外,您必须在数组上执行一个(您可以选择您喜欢的一个),然后您就完成了。您使用的是什么语言?我使用的是c++。谢谢,这很有效
#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int totaldigits=0;
int x[10000000];
int countx=0;
int finddigits(int num)
{
    int counter=0;
    while(num!=0)
    {
        num=num/10;
        counter++;
    }
    return counter;
}
int arrdigits(int *a,int size)
{
    int count=0;
    for(int i=0;i<=size;i++)
    {
    count+=finddigits(a[i]);
    }
    return count;
}
int findval(int n)
{
totaldigits-=finddigits(n);
return(pow(10,totaldigits)*n);
}
void findnum(int *a,int size)
{
    x[countx]=0;
    int n=0;
    for(int i=0;i<=size;i++)
    {
    n+=findval(a[i]);
    }
    x[countx]=n;
    countx++;
}
void swap(int *a,int *b)
{
int *temp;
*temp=*a;
*a=*b;
*b=*temp;
}
void permute(int *arr,int start,int end)
{
if(start==end)
{
totaldigits=arrdigits(arr,end);
findnum(arr,end);
}
else
{
    for(int j=start;j<=end;j++)
    {
        swap(arr[start],arr[j]);
        permute(arr,start+1,end);
        swap(arr[start],arr[j]);  //BACKTRACK
    }
}
}
int main()
{
int a[]={12,4,66,8,9};
totaldigits=arrdigits(a,4);
permute(a,0,4);
sort(x,x+countx);
for(int i=countx-1;i>=0;i--)
fprintf(stdout,"%ld\n",x[i]);
system("pause");
return 0;
}