Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
djkah11
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 5
1

Задача с тимуса

07.07.2012, 11:44. Просмотров 717. Ответов 1
Метки нет (Все метки)

Вот задача с тимуса, возникли с ней проблемы.Я знаю, что на форуме уже есть решение, но всё-таки хотелось бы узнать ошибку в своём кода.
Пока Федя писал условие для задачи
«Летопись GOV», ему пришло в голову,
что бумаги для печати условий может не
хватить. А тут ещё оказалось, что в его
текстовом редакторе нет возможности
определить количество страниц в тексте.
Однако Федя не растерялся и решил сам
написать программу, рассчитывающую
количество страниц по введённому
тексту.
Он знал, что на каждой странице h строк,
а в каждой строке w символов. Между
каждой парой соседних слов в одной
строке ставится ровно один пробел. Если
слово не помещается в строку, Федя не
делит его на слоги для переноса и не
ставит пробел, а просто пишет всё слово с
начала новой строки.
Исходные данные
В первой строке записаны целые числа h ,
w, n — количество строк на странице,
символов в строке и слов в тексте задачи,
соответственно (1 ≤ h , w ≤ 100; 1 ≤ n ≤
10 000). В следующих n строках записан
текст условия, которое написал Федя, по
одному слову в строке. Слова в условии
непусты, имеют длину не более w и
состоят только из строчных и заглавных
латинских букв и знаков препинания
(точка, запятая, восклицательный и
вопросительный знаки). Суммарная
длина всех слов не превосходит 10 000.
Результат
Выведите количество страниц в тексте
условия задачи.
Пример
исходные данные
3 5 6
To
be
or
not
to
be



результат
2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    
 
#include <iostream>
 
using namespace std;
 
int main()
{ int  h,n,w; 
cin>>h>>w>>n;
char b[101];
int a,k=w;
int m=1; 
int y=0; 
int i;
for( i=0;i<n;i++) {
        cin>>b;
      a=strlen(b);     
  k=k-a-1;
        if (k<a) {k=w-a; y++; }; 
      
        ;
        if (y>=h) {m++;y=0;};
     
 
        }
      
 
 if (y==0) m-- ;
        cout<<m;
      
 
    return 0;
    
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 11:44
Ответы с готовыми решениями:

задача с Тимуса
http://acm.timus.ru/problem.aspx?space=1&amp;num=1192

задача с Тимуса
http://acm.timus.ru/problem.aspx?space=1&amp;num=1123 Задача на зачет нужна :scratch:

Задача с тимуса
совсем недавно в программировании встретилась задачка с тимуса 1295 проблема в том что в ней...

Задача с тимуса №1881
http://acm.timus.ru/problem.aspx?space=1&amp;num=1881 #include &lt;iostream&gt; using std::cin; using...

Задача с Тимуса 1446
Всем привет. Я несколько дней бился над задачей с Тимуса. Вот ссыль: вырезано Задача не сложная -...

1
softmob
1251 / 701 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
07.07.2012, 15:42 2
немного переделал, теперь тесты проходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream> 
using namespace std;
 
int main(void)
{ 
    int h, n, w; 
    cin >> h >> w >> n;
    char b[101];
    int a, k = w, m = 1; 
    for (int i = 0; i != n; ++i) 
    {
        cin >> b;
        a = strlen(b);     
        k -= a;
        if (k < 0)      
        {
            ++m;
            k = w - a - 1;
        }
        else
            --k;
    }
    cout << m / h + (m % h != 0) << endl;
    return 0;    
}
или
с меньшии изменениями
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream> 
using namespace std;
 
int main()
{ 
    int h,n,w; 
    cin>>h>>w>>n;
    char b[101];
    int a,k=w;
    int m=1; 
    int y=0; 
    int i;
    for(i=0;i<n;i++)
    {
        cin>>b;
        a=strlen(b);     
        k=k-a-1;
        if (k<-1) 
        {
            k=w-a-1; 
            y++; 
        }
        
        if (y>=h) 
        {
            m++;
            y=0;
        }
    }
    cout<<m;
    return 0;
}
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2012, 15:42

Предохранители. Задача с тимуса №1327
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Янус Полуэктович (не помню уже, А...

Задача с тимуса про сороконожку
У сороконожки 40 левых ножек и 40 правых ножек. Под кроватью у сороконожки a левых тапочек и b...

Олимпиадная задача с тимуса №1209
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Представим себе бесконечную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru