04. Array Rotation
Здравейте, колеги. Пробвах тази задача, но изкарвам 60/100, идеи как да я поправя?
Код: https://pastebin.com/Ae6PgZBt
Здравейте, колеги. Пробвах тази задача, но изкарвам 60/100, идеи как да я поправя?
Код: https://pastebin.com/Ae6PgZBt
Здравей,
Сравнително лесна задача:
string word = Console.ReadLine();
int n = int.Parse(Console.ReadLine());
string[] nums = word.Split(' ');
for (int j = 0; j < n; j++)
{
var temp = nums[0];
for (var i = 0; i < nums.Length - 1; i++)
{
nums[i] = nums[i + 1];
}
nums[nums.Length - 1] = temp;
}
Console.WriteLine("{0}", string.Join(" ", nums));
Два дена ми трови душичката тая задача! Правя опити да я реша с един цикъл и без да ползвам помощен масив. Накрая открих къде се дъни алгоритъма ми. При четна дължина на масива и четна стъпка превърта само елементи на масива, които са на четни позиции. Е излъгах го и ми даде 100/100.
https://pastebin.com/mWNyAh31
using System;
using System.Linq;
class Program {
static void Main(string[] args) {
int[] arr = Console.ReadLine().Split().Select(int.Parse).ToArray();
for (int r = int.Parse(Console.ReadLine()); r > 0; --r) {
for (int i = 0; i < arr.Length - 1; ++i) {
(arr[i], arr[i + 1]) = (arr[i + 1], arr[i]);
}
}
Console.WriteLine(String.Join(" ", arr));
}
}
using System;
internal class Program
{
static void Main()
{
//04.Array Rotation
int[] arr = Console.ReadLine()
.Split(" ")
.Select(int.Parse)
.ToArray();
int rotations = int.Parse(Console.ReadLine());
if (rotations > arr.Length) rotations -= arr.Length;
var result = arr.Skip(rotations).Concat(arr.Take(rotations));
foreach (int item in result) Console.Write(item + " ");
}
}
Според мен, в горния код не е нужно стринга "word" да се конвертира в "int". Тук работим само със символи и никой не ни иска числа. Така е по-добре:
using System;
using System.Linq;
using System.Collections.Generic;
namespace ListManipulationAdvanced
{
class Program
{
public static void Main()
{
var arr = Console.ReadLine().Split().ToArray();
int n = int.Parse(Console.ReadLine());
for (int j = 0; j < n; j++)
{
var end = arr[0];
for (var i = 0; i < arr.Length - 1; i++)
{
arr[i] = arr[i + 1];
}
arr[arr.Length - 1] = end;
}
Console.WriteLine(string.Join(" ", arr));
}
}
}
Къде тук видя конвертиране към int?Като гледам и двете решения са еднакви.
Да, няма конвертиране към int. Явно когато съм писал коментара съм имал предвид задачата, която peter_arsov е публикувал.
Но и друго ме интересува. Решението задължително ли трябва да е с масив? Опитах с List и стана много лесно и бързо. Джъджа го прие без проблем и даде 100/100:
static void Main(string[] args)
{
List<string> list = Console.ReadLine().Split().ToList();
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
list.Add(list[0]);
list.Remove(list[0]);
}
Console.WriteLine(string.Join(" ", list));
}