Susun N nombor asli yang pertama supaya perbezaan mutlak antara unsur bersebelahan lebih besar daripada 1

PHPz
Lepaskan: 2023-09-07 22:01:02
ke hadapan
1066 orang telah melayarinya

Susun N nombor asli yang pertama supaya perbezaan mutlak antara unsur bersebelahan lebih besar daripada 1

Kami mempunyai N nombor asli yang pertama. Tugas kami adalah untuk mendapatkan permutasi mereka di mana perbezaan mutlak antara setiap dua elemen berturut-turut ialah > 1. Jika tiada susunan sedemikian wujud, -1 dikembalikan.

Caranya sangat mudah. Kami akan menggunakan kaedah tamak. Kami mengisih semua nombor ganjil dalam tertib menaik atau menurun dan kemudian semua nombor genap dalam tertib menurun atau menaik

Algoritma

arrangeN(n)

rreee#🎜🎜 Contoh Terjemahan bahasa Cina bagi

ialah:

Contoh

Begin
   if N is 1, then return 1
   if N is 2 or 3, then return -1 as no such permutation is not present
   even_max and odd_max is set as max even and odd number less or equal to n
   arrange all odd numbers in descending order
   arrange all even numbers in descending order
End
Salin selepas log masuk

Output

#include <iostream>
using namespace std;
void arrangeN(int N) {
   if (N == 1) { //if N is 1, only that will be placed
      cout << "1";
      return;
   }
   if (N == 2 || N == 3) { //for N = 2 and 3, no such permutation is available
      cout << "-1";
      return;
   }
   int even_max = -1, odd_max = -1;
   //find max even and odd which are less than or equal to N
   if (N % 2 == 0) {
      even_max = N;
      odd_max = N - 1;
   } else {
      odd_max = N;
      even_max = N - 1;
   }
   while (odd_max >= 1) { //print all odd numbers in decreasing order
      cout << odd_max << " ";
      odd_max -= 2;
   }
   while (even_max >= 2) { //print all even numbers in decreasing order
      cout << even_max << " ";
      even_max -= 2;
   }
}
int main() {
   int N = 8;
   arrangeN(N);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Susun N nombor asli yang pertama supaya perbezaan mutlak antara unsur bersebelahan lebih besar daripada 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!