Help with the solution of the problem.
In the array, find a subset of consecutive numbers (elements cannot be rearranged) composed of K not necessarily adjacent elements of the array (there may be several such subsets). Type array elements.
It is necessary to modify this code.
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include "testing.h" int main() { int length_subset = 0; //Π΄Π»ΠΈΠ½Π° ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° int max_length_subset = 0; //Π΄Π»ΠΈΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° int start_subset = 0; //Π½Π°ΡΠ°Π»ΠΎ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅(ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°,Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ) int original_subset[20]; //ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π» int result_subset[20]; //ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΊΠΎΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ int k = 0, j = 0, count_subset = 0; //ΡΡΠ΅ΡΡΠΈΠΊΠΈ int end_subset; //ΠΊΠΎΠ½Π΅Ρ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅(ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°,Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ) int quantity_elements; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° int m = 0; //Π΄Π»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° //ΠΠ²Π΅ΡΡΠΈ Π΄Π»ΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "Enter lenght of array: " input_printf("Enter lenght of array: "); scanf_s("%d", &m); //ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ if (m < 2 || m > 20) { //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "No solution" printf("Invalid input data"); WAIT_ANY_KEY return 0; } //ΠΠ²Π΅ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° for (int i = 0; i < m; i++) { //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "Enter element of array: " input_printf("Enter element of array: "); scanf_s("%d", &original_subset[i]); //ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡ
ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ if (original_subset[i] > 1000 || original_subset[i] < -1000) { //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "No solution" error_printf("Invalid input data"); WAIT_ANY_KEY return 0; } } //ΠΠ°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π» Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ //ΠΠ»Ρ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° for (int i = 0; i < m; i++) { j = i; length_subset = 0; start_subset = 0; //ΠΠΎΠΊΠ° ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° + 1 = ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° while ((original_subset[j] + 1) == (original_subset[j + 1])) { ++length_subset; //ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΄Π»ΠΈΠ½Ρ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ j++; if (start_subset == 0) //ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ,ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· { start_subset = i; } } ++length_subset; //ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΄Π»ΠΈΠ½Ρ, Ρ.ΠΊ. Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ while Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ //ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ½Π΅Ρ ΡΠ΄Π°Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ end_subset = start_subset + length_subset; //ΠΊΠΎΠ½Π΅Ρ ΡΠ΄Π°Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ //ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ = ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ if (max_length_subset == length_subset && max_length_subset > 1) //ΠΈΡΠΊΠΎΠΌΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°Π²Π½Ρ, Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ { //ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² for (start_subset; start_subset < end_subset; start_subset++) { result_subset[k] = original_subset[start_subset]; k++; //k Π·Π΄Π΅ΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π°ΡΠ½Π΅Ρ Ρ ΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ } quantity_elements += length_subset; //ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Ρ.ΠΊ. Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ } //ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ > ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° else if (max_length_subset < length_subset && length_subset > 1) { max_length_subset = length_subset; //ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ k = 0; //k Π·Π΄Π΅ΡΡ ΠΎΠ±Π½ΡΠ»ΡΠ΅ΡΡΡ, Ρ.ΠΊ. Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ ΠΈ ΡΠ½Π°ΡΠ°Π»Π° //ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² for (start_subset; start_subset < end_subset; start_subset++) { result_subset[k] = original_subset[start_subset]; k++; } quantity_elements = length_subset; //ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² } } //ΠΡΠ»ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² //ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΠ°Π²Π½ΠΎ 0 if (max_length_subset == 0) { //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "No solution" printf("no solution"); WAIT_ANY_KEY return 0; } //ΠΡΠ²Π΅ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° else { printf("\n\n\n"); //ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° 3 ΡΡΡΠΎΠΊΠΈ Π²Π½ΠΈΠ· //ΠΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² for (k = 0; k < quantity_elements; k++) { //ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° printf("%d ", result_subset[k]); count_subset++; //ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ if (count_subset == max_length_subset) { printf("\n"); count_subset = 0; } } WAIT_ANY_KEY return 0; } }