Encrypted Matrix - Проблем
Привет колеги,
Днес се занимавах със задачата Encrypted Matrix, която се е падала тази година на 29ти март на изпита. Първия ми вариант(код : http://pastebin.com/mg2X2Z6X). Джъджа ми отсъди 40 точки. Реших, че проблема може да е в начина, по който се опитвам да превърна стринга отново в инт масив(линии 99-104). ОК, намерих начин да мина без това и направих втори вариант, по-опростен(код: http://pastebin.com/KRGpE00v) където въвеждам потребителски int[] и процедура за превръщане на число в масив от цифри. И двата варианта работят при мен. Само че джъджа оцени втория по-зле:20 точки. Плийс, кажете ми къде е грешката. Благодарско предварително на всички.
Колега, това за празното място между цифричките го пише във файла с домашното:
Output
The output data should be printed on the console.
You must print the matrix with a single space between the elements.
Иначе аз още в началото си пълня ASCII стойностите в един int масив и просто ползвам /10 и %10. Накрая пълня само диагонала на двумерен масив и в зависимост от наклонената чертичка печатам от ляво на дясно или обратното.
Да, така пише, но не съм гледал.
Не знаех, че липсващите стойности на масива се пълнят с нули. Аз отделно съм ги и напълнил с нули.
VyKov, как избягваш проблема с промняната на дължината при енкрипването, ако използваш само един масив?
Най-вероятно еккриптва и направо печата. Ако се получи N-цифрено число при умножението/събирането, просто печата N реда. И да, няма нужда от матрица (двумерен масив). Просто печаташ Х на брой нули, числото, още нули до края на реда :)
Да, не е нужен двимерен масив, но на мен ми е доста по - лесно от управление на стрингове и печатането им. Отделно че има малко сметки на ред по колко нули от всеки край се печатат а в 3 сутринта не ми се занимаваше :Д. Като цяло с двимерния масив мисля, че е по - бавно, тъй като имаме n*n само за печатането, но при това ограничение на входа n*n не е проблем явно.
Иначе промяната на размеря не ме бърка, тъй като аз си имам един брояч на цифрите. Ако е двуцифрено число просто прибавям и двете цифри и увеличавам брояча с 2.
логиката ми енещо от сорта:
for(i....){
matrix[count][count] = numbers[i]%10;
count++;
if(numbers[i]/10>0)
{
matrix[count][count]=numbers[i]/10;
count++;
}
}
StaVykoV, дай да видим целия код в pastebin. Мерси
Заповядай, дано е четливо и ти помогне :)
http://pastebin.com/CHbnpmqA
Мерси, кода е четим, да. НО не съм те разбрал.Аз останах с впечатление, че използваш 1 единствен масив, в който записваш първоначалните стойности, и една матрица за печатане.