Форум программистов, компьютерный форум, киберфорум
Наши страницы

Задача для лабораторной - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стеки и удаление конкретного элемента из стека http://www.cyberforum.ru/cpp-beginners/thread877341.html
Здравствуйте, уважаемые программисты и начинающие как я. Помогите, пожалуйста с одной функцией. В общем задача такова: Имеется два списка (в моем случае это список таксистов на маршруте и на базе),...
C++ Указатели на функции + typedef Здравствуйте , я вот встретил такую конструкцию typedef int(*compare_func_t)(const void*val1, const void*val2); Не понял что она означает , погуглив , я нашел что это указатель на функцию .... http://www.cyberforum.ru/cpp-beginners/thread877339.html
С++. Массивы. Указатели. Определить кол-во и сумму отрицательных элементов C++
Ребят, срочно помогите пожалуйста! Завтра зачёт по с++, задачи будут примерное такие: 1) Написать прогу, которая заполняет случайным образом массив А (n<30) целочисленными значениями. Определить...
C++ Запрет на ввод букв
Помогите пожалуйста сделать запрет на ввод букв: #include "stdafx.h" #include <cstdlib> #include <iostream> #include <math.h> #include <conio.h> using namespace std;
C++ курсач (дискретная математика, пузырьковая сортировка) http://www.cyberforum.ru/cpp-beginners/thread877321.html
Здравствуйте! нужна курсовая работа на тему "Пузырьковая сортировка". Вместе с графикой. Помогите пожалуйста.
C++ Не могу исправить ошибки. Заранее спасибо Задание: Программа реализует двусвязный список. Функции: 1) Добавление элемента на заданую пользователем позицию; 2) Удаление элемента по ключу; 3) Вывод двусвязного списка на экран; 4) Поиск... подробнее

Показать сообщение отдельно
BestIn
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 10
02.06.2013, 13:25  [ТС]
Вообщем вот такой код у меня получился,но не проходит 25 тест(на тимусе),не знаю что делать.
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
const int p=31;
const int maxn=1000000;
int n;
string s1,s2;
vector <int> hasht[maxn];
 vector <int> prefix1,prefix2;
vector <int> ps;
 
bool Comp_strs(string &s1,string &s2,int num1,int num2,int l)
{
 for (int i=num1,j=num2;i<num1+l;i++,j++)
 if (s1[i]!=s2[j]) return false;
 return true;
}
 
void Get_hash(int l)
{
 int tmp_hash;
 for (int i=0;i<=s1.length()-l;i++)
 {
 if (i) tmp_hash=prefix1[i+l-1]-prefix1[i-1];
 else tmp_hash=prefix1[i+l-1];
 if (tmp_hash<0) tmp_hash+=maxn;
 tmp_hash=(1ll*tmp_hash*ps[n-i])%maxn;
 hasht[tmp_hash].push_back(i);
 }
}
bool Check_hash(int l,int &beg_str)
{
 int tmp_hash;
 for (int i=0;i<=s2.length()-l;i++)
 {
 if (i) tmp_hash=prefix2[i+l-1]-prefix2[i-1];
 else tmp_hash=prefix2[i+l-1];
 if (tmp_hash<0) tmp_hash+=maxn;
 tmp_hash=(1ll*tmp_hash*ps[n-i])%maxn;
 for (int j=0;j<hasht[tmp_hash].size();j++)
 if (Comp_strs(s1,s2,hasht[tmp_hash][j],i,l))
 {
 beg_str=hasht[tmp_hash][j];
 return true;
 }
 }
 return false;
}
 
void Init_prefix()
{
 prefix1.resize(n);
 prefix2.resize(n);
 ps.resize(n+1);
 ps[0]=1;
 ps[1]=p;
 prefix1[0]=(s1[0]-'A'+1)%maxn;
 prefix2[0]=(s2[0]-'A'+1)%maxn;
 for (int i=1;i<n;i++)
 {
 prefix1[i]=(1ll*(s1[i]-'A'+1)*ps[i]+prefix1[i-1])%maxn;
 prefix2[i]=(1ll*(s2[i]-'A'+1)*ps[i]+prefix2[i-1])%maxn;
 ps[i+1]=(1ll*ps[i]*p)%maxn;
 }
}
 
void Clear()
{
 for (int i=0;i<maxn;i++)
 hasht[i].clear();
}
 
bool Check_in_strs(int l,int& beg_str)
{
 Clear();
 Get_hash(l);
 return Check_hash(l,beg_str);
}
 
 void Search()
{
 int l=0,r=n+1,m;
 int beg_str;
 while (r-l!=1)
 {
 m=(l+r)/2;
 if (Check_in_strs(m,beg_str)) l=m;
 else r=m;
 }
 if (l==0) cout << "";
 else 
 {
 Check_in_strs(r-1,beg_str);
 for (int i=beg_str;i<beg_str+r-1;i++)
 cout << s1[i];
 }
}
 
 
int main()
{
 //ifstream cin ("input.txt");
 cin >> n;
 cin >> s1 >> s2;
 Init_prefix();
 Search();
 return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.