Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Олимпиады

Страница: 1 |

 

  Вопрос: Srochno Pomogite (na C++ ili C) Добавлено: 26.01.05 04:53  

Автор вопроса:  AASoft
Zapisalsya na olimpiadu, a v shkole urokami zavalili.....v obshem tam pervyj tur budet na vybor kvalificirovannyh uchasnikov, i zadachi nado reshat` doma....esli kto znaet C ili C++ horosho, mozhete pomoch`? tama 5 zadach, mne nado poslednie dve i vtoruyu......zadachi na angliskom.....

Zaranee spasibki vsem kto voz`metsya pomoch`...

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #1 Добавлено: 26.01.05 04:53
vo blin, zabyl link polozhit`... :(
v PDF'e na angliskom..
http://www.cs.sfu.ca/news/events/psc/qual1/qual1.pdf

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 30.01.05 07:08
Вторая задача:

// Комментарии к коду:
// Очевидно, каждый из возможных треугольников имеет левую верхнюю вершину, причем только одну. Таким образом, перебирая все возможные левые верхние вершины, все возможные типы треугольников, и все возможные их размеры и проверяя, одинаковые ли буквы стоят внутри их (сравнивая с левой верхней вершиной), можно получить все существующие в матрице треугольники.

#include <stdio.h>

#define MAX_MATRICES 100
#define MAX_DIMENSION 30

int main(){
int m[MAX_DIMENSION][MAX_DIMENSION], res[MAX_MATRICES][26], dim=-1, i, j, s, fs, k, l, z, nm=0, lit[MAX_MATRICES][26];
char buff[MAX_DIMENSION+2];

// Пока есть матрицы
while(1){
// Считываем очередную матрицу
scanf("%d", &dim);
if(!dim) break;
for(i=0; i<dim; i++){
scanf("%s", buff);
for(j=0; j<dim; j++){
m[j] = buff[j];
}
}
// Обнуляем массивы встречающихся букв и результата для текущей матрицы
for(i=0; i<26; i++){
lit[nm] = 0;
res[nm] = 0;
}
// Смотрим, какие буквы встречаются в матрице
for(i=0; i<dim; i++){
for(j=0; j<dim; j++){
lit[nm][m[j] - 'A'] = 1;
}
}

// Размышляем
for(i=0; i<dim; i++){
for(j=0; j<dim; j++){
fs = m[j]; // Все символы в треугольнике должны быть такие же, как в вершине
for(s=1; s<=dim; s++){ // Все возможные размеры

// Первый тип треугольников
// AA
// A
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j+s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=0; l<=s-k; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Второй тип треугольников
// A
// AA
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j+s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=0; l<=k; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Третий тип треугольников
//  A
// AA
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j-s >= 0){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=-k; l<=0; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Четвертый тип треугольников
// AA
//  A
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j+s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=k; l<=s; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Пятый тип треугольников
//  A
// AAA
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j+s < dim && j-s >= 0){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=-k; l<=k; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Шестой тип треугольников
// A
// AA
// A
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+2*s < dim && j+s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=2*s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=0; l<=(k>s?2*s-k:k); l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Седьмой тип треугольников
// AAA
//  A
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+s < dim && j+2*s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=k; l<=2*s-k; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

// Восьмой тип треугольников
//  A
// AA
//  A
z = 1; // Изначально считаем треугольник содержащим одинаковые символы
if(i+2*s < dim && j-s < dim){ // Треугольник должен помещаться в матрице
for(k=0; k<=2*s; k++){ // Проверяем все символы треугольника на одинаковость
for(l=(k>s?k-2*s:-k); l<=0; l++){
if(m[i+k][j+l] != fs) z=0;
}
}
if(z == 1) res[nm][fs-'A']++;
}

}
}
}


nm++; // Номер матрицы увеличился
}

// Выводим результаты
int bl; // Это начало строки?
for(i=0; i<nm; i++){
bl = 1;
for(j=0; j<26; j++){
if(lit[j]){ // Если буква в матрице встречалась
if(!bl) printf(", ";); // Если это не начало строки, вставить запятую и пробел
bl = 0;
printf("%d %c triangle", res[j], j+'A');
if(res[j]!=1) printf("s";); // Если треугольников не 1, нужно использовать множественное число
}
}
printf("\n";);
}
return 0;
}

Остальные, надеюсь, чуть погодя

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 30.01.05 10:49
Четвертая на вывод, я такие задачи не уважаю. Вот программа, выводящая треугольник Паскаля с меньшими затратами на форматирование, с напильником немного поработай :)

#include <stdio.h>

#define MAX_LINES 20

int main(){
int i, j, n;
long m[MAX_LINES][MAX_LINES];
for(i=0; i<MAX_LINES; i++){
m[0] = 1;
m = 1;
}
scanf("%d", &n);
for(i=2; i<=n; i++){
for(j=1; j<i; j++){
m[j] = m[i-1][j] + m[i-1][j-1];
}
}
for(i=0; i<n; i++){
for(j=0; j<=i; j++) printf("%d\t", m[j]);
printf("\n";);
}
return 0;
}

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 30.01.05 10:50
О ужас! Я только что обнаружил, что [ i ] в коде считается за код включения курсива! Павел, это надо срочно пофиксить, писать же на С++ невозможно!

Ответить

Номер ответа: 5
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #5 Добавлено: 31.01.05 00:31
Spasibo Sharp!
S triugol`nikom Pascalya ya uzhe i sam reshil, pravda u menya koda razav tri bol`she..... o.O

a vtoruyu zadachu - vyshli na email, AASoft@gmail.com

a to ee na samom dele pisat` i chitat` nevozmozhno.....

eshe raz spasibo...ostal`noe ta dumayu sam dogonyu kak sdelat`..

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 31.01.05 07:30
Выслал. Пятую задачу тебе решать или сам разберешься? :)

Ответить

Номер ответа: 7
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #7 Добавлено: 31.01.05 23:44
da ne znayu dazhe, mysli kakieto byli, no dazhe ne nachinal eshe...esli dumaesh` ne dolgo ne dolgo budesh` delat` to pishi, a voobshe dumayu sam sdelayu.....

Ответить

Номер ответа: 8
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #8 Добавлено: 02.02.05 02:53
Sharp, mozhesh` eshe raz poslat`, a to ne doshlo cheto.
Pasibki

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 02.02.05 22:55
Выслал еще раз. А теперь:
[РЕКЛАМА!]
Что такое почта на Яндексе?
1) Вам никогда не будет приходить спам (никогда - значит не чаще раза в месяц)
2) всегда стабильно работающие POP3 и SMTP сервера
3) удобный и беотказный Web-интерфейс
4) отличная фильтрация вирусов
5) удаляется только спам, важные письма всегда доходят
6) пространство под письма неограничено
На других серверах вашу важную корреспонденцию могут удалять по совершенно непонятным причинам, вам будут приходить тонны спама и вы никак не сможете отличить их от обычных писем, не прочитав, вы сможете приконнектиться к ним не чаще 2 раз в день на 5 минут, вам будут приходить все новые вирусы, переполняя ваш крошечный ящик, требующий чистки каждые 5 часов. На Яндексе такого не будет никогда! Пользуйтесь почтой Яндекса!
[/РЕКЛАМА!]

Ответить

Номер ответа: 10
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #10 Добавлено: 03.02.05 07:41
razve chto ato ot google'a email....to est` gmail.com

esli nado, mogu yashik sdelat`

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 03.02.05 13:21
Не, не надо, насколько я знаю, почта Яндекса лучше, чем gmail

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам