给定一个整数N ,任务是找到从1到N的整数的排列,使得是最大值。
例子:
Input: N = 3
Output: 3 1 2
Sum of the remainder values is (0 + 1 + 2) = 3
which is the maximum possible.
Input: N = 5
Output: 5 1 2 3 4
处理方法:众所周知,与Y做模后的数X的最大值是Y-1 。将产生最大 mosulus 值总和的排列将为{N, 1, 2, 3, …., N – 1} 。
对表达式求值后在上面的数组上,输出数组将为{0, 1, 2, 3, …., N – 1} ,这是可以获得的最大值。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to find the permutation
vector Findpermutation(int n)
{
vector a(n + 1);
// Put n at the first index 1
a[1] = n;
// Put all the numbers from
// 2 to n sequentially
for (int i = 2; i <= n; i++)
a[i] = i - 1;
return a;
}
// Driver code
int main()
{
int n = 8;
vector v = Findpermutation(n);
// Display the permutation
for (int i = 1; i <= n; i++)
cout << v[i] << ' ';
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class GFG
{
// Function to find the permutation
static int[] Findpermutation(int n)
{
int [] a = new int[n + 1];
// Put n at the first index 1
a[1] = n;
// Put all the numbers from
// 2 to n sequentially
for (int i = 2; i <= n; i++)
a[i] = i - 1;
return a;
}
// Driver code
public static void main(String[] args)
{
int n = 8;
int []v = Findpermutation(n);
// Display the permutation
for (int i = 1; i <= n; i++)
System.out.print(v[i] + " ");
}
}
// This code is contributed by 29AjayKumar
Python3
# Python3 implementation of the approach
# Function to find the permutation
def Findpermutation(n) :
a = [0] * (n + 1);
# Put n at the first index 1
a[1] = n;
# Put all the numbers from
# 2 to n sequentially
for i in range(2, n + 1) :
a[i] = i - 1;
return a;
# Driver code
if __name__ == "__main__" :
n = 8;
v = Findpermutation(n);
# Display the permutation
for i in range(1, n + 1) :
print(v[i], end = ' ');
# This code is contributed by AnkitRai01
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to find the permutation
static int[] Findpermutation(int n)
{
int [] a = new int[n + 1];
// Put n at the first index 1
a[1] = n;
// Put all the numbers from
// 2 to n sequentially
for (int i = 2; i <= n; i++)
a[i] = i - 1;
return a;
}
// Driver code
public static void Main(String[] args)
{
int n = 8;
int []v = Findpermutation(n);
// Display the permutation
for (int i = 1; i <= n; i++)
Console.Write(v[i] + " ");
}
}
// This code is contributed by 29AjayKumar
Javascript
输出:
8 1 2 3 4 5 6 7
时间复杂度: O(N)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。