Форум программистов, компьютерный форум CyberForum.ru

Игра города - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
22.10.2011, 15:11     Игра города #1
Широко известна игра "Города". Называется какой-нибудь город, допустим, "Саратов". Кончается на "в", значит требуется назвать другой город, у которого в названии первая буква "в". Это может быть "Воронеж". Следующий город должен начинаться на "ж" и т.д. Запрещено повторять название городов. Надо написать программу, которая из набора названий городов (все названия разные) строит цепочку максимальной длины.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "iostream"
 
using namespace std;
 
    char **gmass;
    int kolvo;
    void ADDG(char gorod[20])
    {
        char **temp;
        temp=new char *[kolvo];
        int i;
        for (i=0;i<kolvo;i++)
        temp[i]=new char [20];
        for (i=0;i<kolvo;i++)
        temp[i]=gmass[i];
        delete (gmass);
        ++kolvo;
        gmass=new char*[kolvo];
        for (i=0;i<kolvo;i++)
        gmass[i]=new char [20];
        for (i=0;i<kolvo-1;i++)
        temp[i]=gmass[i];
        gmass[kolvo-1]=gorod;
        delete (temp);
    }
    
    int *maxz;
    int kolsl;
    int search(int cur,int *sost,int *thiskol)
    {
        if (thiskol == 0)
          for (int i=0;i<kolvo;i++)
            {
                sost[i]=0;
                search(i,sost,1);
                sost[i]=-1;
            }
            else
            {
                char a=gmass[cur][strlen(gmass[cur]-1)];        
                for (int i=0;i<kolvo;i++)
                    if ((gmass[i][0] == a) && (sost[i]== -1))
                    {
                      sost[i]=thiskol;
                      search(i,sost,thiskol+1);
                      sost[i]=-1;
                    }
                    if (kolsl<thiskol)
                    {
                      kolsl=thiskol;
                      for (i=0;i<kolvo;i++)
                    maxz[i]=sost[i];
                    }
            }
    }
    
int main ()
{
  kolvo=0;
  char gorod [20];
  cin>>gorod;
  while (gorod !='q')
  {
    if (kolvo == 0)
    {
      gmass=new char*[1];
      gmass[0]=new char[20];
      int t;
      for (t=0;t<20;t++)
      gmass[0][t]=gorod[t];
      kolvo++;
    }
    else
      ADDG(gorod);
  }
   int *gor;
   gor=new int [kolvo];
   for (int m;m<kolvo;m++)
   gor[m]=-1;
   maxz=new int[kolvo];
   kolsl=0;
   search(-1,gor,0);
   for (int a=0;a<kolsl;a++)
    for (int y=0;y<kolvo;y++)
      if (maxz[y] == a)
      {
    cout<<gmass[y]<<' ';
    break;
      }
      return 0;
}
Помогите исправить ошибки!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 15:11     Игра города
Посмотрите здесь:

игра в города C++
Игра "Города" C++
Игра в города C++
C++ Проверка корректности введенного города игра "Города"
Игра в города C++
C++ Игра "Города" по сети
Игра "Города" в С++ C++
C++ Строки. Игра в города

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
22.10.2011, 18:40     Игра города #2
строка 36. В качестве 3 переменной вы передаете int значение. А надо int*
строка 45. Тоже самое, только наоборот
строка 52. Необьявлена переменная i

Что это??
C++
1
#include "iostream"
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
using namespace std;
 
        char **gmass;
        int kolvo;
        void ADDG(char gorod[20])
        {
                char **temp;
                temp=new char *[kolvo];
                int i;
                for (i=0;i<kolvo;i++)
                temp[i]=new char [20];
                for (i=0;i<kolvo;i++)
                temp[i]=gmass[i];
                delete (gmass);
                ++kolvo;
                gmass=new char*[kolvo];
                for (i=0;i<kolvo;i++)
                gmass[i]=new char [20];
                for (i=0;i<kolvo-1;i++)
                temp[i]=gmass[i];
                gmass[kolvo-1]=gorod;
                delete (temp);
        }
        
        int *maxz;
        int kolsl;
        void search(int cur,int *sost,int thiskol)
        {
                if (thiskol == 0)
                  for (int i=0;i<kolvo;i++)
                        {
                                sost[i]=0;
                                search(i,sost,1);
                                sost[i]=-1;
                        }
                        else
                        {
                                char a=gmass[cur][strlen(gmass[cur]-1)];                
                                for (int i=0;i<kolvo;i++)
                                    if ((gmass[i][0] == a) && (sost[i]== -1))
                                        {
                                          sost[i]=thiskol;
                                          search(i,sost,thiskol+1);
                                          sost[i]=-1;
                                        }
                                    if (kolsl<thiskol)
                                    {
                                      kolsl=thiskol;
                                      for (int i=0;i<kolvo;i++)
                                        maxz[i]=sost[i];
                                    }
                        }
        }
        
int main ()
{
  kolvo=0;
  char gorod [20];
  cin>>gorod;
  while (gorod !="q")
  {
    if (kolvo == 0)
    {
      gmass=new char*[1];
      gmass[0]=new char[20];
      int t;
      for (t=0;t<20;t++)
      gmass[0][t]=gorod[t];
      kolvo++;
    }
    else
      ADDG(gorod);
  }
   int *gor;
   gor=new int [kolvo];
   for (int m;m<kolvo;m++)
   gor[m]=-1;
   maxz=new int[kolvo];
   kolsl=0;
   search(-1,gor,0);
   for (int a=0;a<kolsl;a++)
    for (int y=0;y<kolvo;y++)
      if (maxz[y] == a)
      {
        cout<<gmass[y]<<' ';
        break;
      }
      return 0;
}
Программа работает. но неправильно, так как незнаю алгоритм... (еще мало опыта)
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
22.10.2011, 20:26  [ТС]     Игра города #3
Цитата Сообщение от amor1k Посмотреть сообщение
Что это??
Код C++1 #include "iostream"
библиотека только забыл h дописать, в моём случае)
но и на том спасибо, хоть ошибок нету, буду думать почему не работает...
Yandex
Объявления
22.10.2011, 20:26     Игра города
Ответ Создать тему
Опции темы

Текущее время: 12:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru