Computer >> Máy Tính >  >> Lập trình >> C ++

Các số liên tiếp tối đa có trong một mảng trong C ++

Chúng tôi được cung cấp với một mảng các số nguyên dương. Mục đích là để tìm số lượng lớn nhất các số liên tiếp có trong nó. Trước hết, chúng ta sẽ sắp xếp mảng và sau đó so sánh các phần tử liền kề arr [j] ==arr [i] +1 (j =i + 1), nếu khác biệt là 1 thì số gia tăng và các chỉ số i ++, j ++ elsechange count =1. Lưu trữ số lượng tối đa được tìm thấy cho đến nay được lưu trữ trong maxc.

Đầu vào

Arr[]= { 100,21,24,73,22,23 }

Đầu ra

Maximum consecutive numbers in array : 4

Giải thích - Mảng được sắp xếp là - {21,22,23,24,73,100} khởi tạo count =1, maxcount =1

1. 22=21+1 count=2 maxcount=2 i++,j++
2. 23=22+2 count=3 maxcount=3 i++,j++
3. 24=23+1 count=4 maxcount=4 i++,j++
4. 73=24+1 X count=1 maxcount=4 i++,j++
5. 100=73+1 X count=1 maxcount=4 i++,j++

Các số liên tiếp tối đa là 4 {21,22,23,24}

Đầu vào

Arr[]= { 11,41,21,42,61,43,9,44 }

Đầu ra

Maximum consecutive numbers in array : 4

Giải thích - Mảng được sắp xếp là - {9,11,21,41,42,43,44,61} khởi tạo count =1, maxcount =1

1. 11=9+1 X count=1 maxcount=1 i++,j++
2. 21=11+1 X count=1 maxcount=1 i++,j++
3. 41=21+1 X count=1 maxcount=1 i++,j++
4. 42=41+1 count=2 maxcount=2 i++,j++
5. 43=42+1 count=3 maxcount=3 i++,j++
6. 44=43+1 count=4 maxcount=4 i++,j++
7. 61=44+1 X count=1 maxcount=4 i++,j++

Các số liên tiếp tối đa là 4 {41,42,43,44}

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Mảng số nguyên Arr [] được sử dụng để lưu trữ các số nguyên.

  • Số nguyên ‘n’ lưu trữ độ dài của mảng.

  • Hàm subs (int arr [], int n) nhận một mảng, kích thước của nó làm đầu vào và trả về các số liên tiếp lớn nhất có trong mảng.

  • Trước hết, chúng ta sẽ sắp xếp mảng bằng cách sử dụng sort (arr, arr + n)

  • Bây giờ khởi tạo count =1 và maxc =1.

  • Bắt đầu từ hai phần tử đầu tiên, arr [0] và arr [1] bên trong hai vòng lặp for, hãy so sánh ifarr [j] ==arr [i] +1 (j =i + 1), nếu đúng thì đếm gia tăng và i bằng 1.

  • Nếu điều kiện trên là false một lần nữa, hãy thay đổi số đếm thành 1. Cập nhật maxc với số lượng được tìm thấy cao nhất cho đến nay (maxc =count> maxc? Count:maxc).

  • Cuối cùng, trả về maxc là số phần tử liên tiếp tối đa.

Ví dụ

#include <iostream>
#include <algorithm>
using namespace std;
int subs(int arr[],int n){
   std::sort(arr,arr+n);
   int count=1;
   int maxc=1;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[j]==arr[i]+1){
             count++;
            i++;
         }
         else
            count=1;
         maxc=count>maxc?count:maxc;
      }
   }
   return maxc;
}
int main(){
   int arr[] = { 10,9,8,7,3,2,1,4,5,6 };
   int n = sizeof(arr) / sizeof(int);
   cout << "Maximum consecutive numbers present in an array :"<<subs(arr, n);
   return 0;
}

Đầu ra

Maximum consecutive numbers present in an array : 10