Трябва ми някакво решение на следната задача, на C++ или Java ...Ще съм много благодарен на всеки опитал се да помогне!
Напишете програма която прочита от стандартния вход броя N на естествени числа, които ще анализира. След това програмата трябва да прочете тези N числа и да отпечата на един ред на стандартния изход броя на тези от тях, които могат, чрез разместване на цифрите в записа им да се преобразуват в някое от другите прочетени числа
Пример:
Вход :6 25 21 10242 42210 52 24021
Изход 5
Ограничения 2 < N ≤ 106 ;
прочетените числа са по-малки от 264. Гарантирано е, че прочетените числа са различни.
Обяснение на примера Чрез разместване на цифрите на 25 може да се получи 52. Вярно е и обратното твърдение – чрез разместване на цифрите на 52 може да се получи 25. До тук две измежду прочетените числа отговарят на исканото условие. Подобни съображения са валидни и за трите петцифрени числа от прочетените. Или общо пет от прочетените числа отговарят на условието
Страница 1 от 1
Намиране на броя числа с дублиращи се цифри..помощ
#2
Публикувано: 25.02.21 - 04:36

Хах, стана ми интересно и реших да ти помогна с две години закъснение:
Ето код, базиран на това условие, който ако се рефакторира и се понамалят циклите може да заприлича на нещо.
поздрави!
import java.util.*;
import java.util.stream.Collectors;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] arr = scanner.nextLine().split(" ");
List<String[]> arrList = new ArrayList<>();
//putting the numbers as split arrays into list of arrays;
for (String a : arr) {
arrList.add(a.split(""));
}
//sorting the Arrays in the List of arrays;
for (int i = 0; i < arrList.size(); i++) {
String[] currentArr = arrList.get(i);
Arrays.sort(currentArr);
arrList.set(i, currentArr);
}
//converting back into Strings, so we can use Collections.frequency method;
List<String> stringValuesSorted = new ArrayList<>();
for (String[] s : arrList) {
stringValuesSorted.add(Arrays.toString(s));
}
//counting
int counter=0;
for (String s : stringValuesSorted) {
if(Collections.frequency(stringValuesSorted,s)<=1){
counter++;
}
}
//result
System.out.println(arrList.size()-counter);
}
}
Ето код, базиран на това условие, който ако се рефакторира и се понамалят циклите може да заприлича на нещо.
поздрави!
import java.util.*;
import java.util.stream.Collectors;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] arr = scanner.nextLine().split(" ");
List<String[]> arrList = new ArrayList<>();
//putting the numbers as split arrays into list of arrays;
for (String a : arr) {
arrList.add(a.split(""));
}
//sorting the Arrays in the List of arrays;
for (int i = 0; i < arrList.size(); i++) {
String[] currentArr = arrList.get(i);
Arrays.sort(currentArr);
arrList.set(i, currentArr);
}
//converting back into Strings, so we can use Collections.frequency method;
List<String> stringValuesSorted = new ArrayList<>();
for (String[] s : arrList) {
stringValuesSorted.add(Arrays.toString(s));
}
//counting
int counter=0;
for (String s : stringValuesSorted) {
if(Collections.frequency(stringValuesSorted,s)<=1){
counter++;
}
}
//result
System.out.println(arrList.size()-counter);
}
}
Споделете тази тема чрез:
Страница 1 от 1
1 потребители четат тази тема
0 регистрирани потребители, 1 гости и 0 анонимни потребители
Data.BG e форум за дискусии. Data.BG не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.
Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.
Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.