给定整数N ,任务是生成N个正整数的序列,使得:
- 每个位于偶数位置的元素都必须大于其后一个元素及其前一个元素,即arr [i – 1]
arr [i + 1] - 元素的总和必须是偶数且最小可能(在所有可能的序列中)。
例子:
Input: N = 4
Output: 1 2 1 2
Input: N = 5
Output: 1 3 1 2 1
方法:为了获得具有最小和的序列,序列的形式必须为1、2、1、2、1、1、2、1 … ;对于序列之和不为偶数的情况,任何2序列中的可以更改为3,以使序列的总和均匀。
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
using namespace std;
// Function to print the required sequence
void make_sequence(int N)
{
// arr[] will hold the sequence
// sum variable will store the sum
// of the sequence
int arr[N + 1], sum = 0;
for (int i = 1; i <= N; i++) {
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
// If sum of the sequence is odd
if (sum % 2 == 1)
arr[2] = 3;
// Print the sequence
for (int i = 1; i <= N; i++)
cout << arr[i] << " ";
}
// Driver Code
int main()
{
int N = 9;
make_sequence(N);
return 0;
}
Java
// Java implementation of above approach
class GFG
{
// Function to print the required sequence
static void make_sequence(int N)
{
// arr[] will hold the sequence
// sum variable will store the sum
// of the sequence
int[] arr = new int[N + 1];
int sum = 0;
for (int i = 1; i <= N; i++)
{
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
// If sum of the sequence is odd
if (sum % 2 == 1)
arr[2] = 3;
// Print the sequence
for (int i = 1; i <= N; i++)
System.out.print(arr[i] + " ");
}
// Driver Code
public static void main(String[] args)
{
int N = 9;
make_sequence(N);
}
}
// This code is contributed by iAyushRaj.
Python 3
# Python 3 implementation of above approach
# Function to print the required sequence
def make_sequence( N):
# arr[] will hold the sequence
# sum variable will store the sum
# of the sequence
arr = [0] * (N + 1)
sum = 0
for i in range(1, N + 1):
if (i % 2 == 1):
arr[i] = 1
else:
arr[i] = 2
sum += arr[i]
# If sum of the sequence is odd
if (sum % 2 == 1):
arr[2] = 3
# Print the sequence
for i in range(1, N + 1):
print(arr[i], end = " ")
# Driver Code
if __name__ == "__main__":
N = 9
make_sequence(N)
# This code is contributed by ita_c
C#
// C# implementation of above approach
using System;
class GFG
{
// Function to print the required sequence
public static void make_sequence(int N)
{
// arr will hold the sequence
// sum variable will store the sum
// of the sequence
int[] arr = new int[N + 1];
int sum = 0;
for (int i = 1; i <= N; i++)
{
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
// If sum of the sequence is odd
if (sum % 2 == 1)
arr[2] = 3;
// Print the sequence
for (int i = 1; i <= N; i++)
Console.Write(arr[i] + " ");
}
// Driver Code
public static void Main()
{
int N = 9;
make_sequence(N);
}
}
// This code is contributed by iAyushRaj.
PHP
输出:
1 3 1 2 1 2 1 2 1