#include <iostream>
#include <vector>
#include <set>
#include <time>
std::set<std::string> subSeqs;
struct _element {
char digit;
int count;
};
std::vector<_element> elemSeq;
void recurse(std::vector<_element>::iterator elemRest, std::string subSeqHead) {
bool fin = (elemRest+1 == elemSeq.end());
for (int i = 0; i <= elemRest->count; i++, subSeqHead += elemRest->digit)
if (fin)
subSeqs.insert(subSeqHead);
else
recurse(elemRest+1, subSeqHead);
}
void main(void)
{
int i;
_element element;
std::string initialSeq = "1234567890123";
std::cout << "Initial sequence: " << initialSeq << "\n";
clock_t start = clock();
element.digit = initialSeq[0];
element.count = 1;
for (i = 1; i < initialSeq.length(); i++) {
if (element.digit == initialSeq[i])
element.count++;
else {
elemSeq.push_back(element);
element.digit = initialSeq[i];
element.count = 1;
}
}
elemSeq.push_back(element);
recurse(elemSeq.begin(), "");
clock_t finish = clock();
i = 0;
std::cout << "Elements: (";
for (std::vector<_element>::iterator t = elemSeq.begin();
t != elemSeq.end(); t++) {
if (i++ != 0)
std::cout << ", ";
std::cout << "{'" << t->digit << "', " << t->count << "}";
}
std::cout << ")\n";
std::cout << subSeqs.size()-1 << " unique subsequences\n";
std::cout << "Calculation time " << finish-start << " clicks, ";
std::cout << ((float)(finish-start))/CLOCKS_PER_SEC << " sec\n";
/* for (std::set<std::string>::iterator t = subSeqs.begin();
t != subSeqs.end(); t++) {
std::cout << *t << "\n";
} */
}
Initial sequence: 8246
Elements: ({'8', 1}, {'2', 1}, {'4', 1}, {'6', 1})
15 unique subsequences
Calculation time 0 clicks, 0 sec
================================================================
Initial sequence: 88885
Elements: ({'8', 4}, {'5', 1})
9 unique subsequences
Calculation time 0 clicks, 0 sec
================================================================
Initial sequence: 12345678901234567890
Elements: ({'1', 1}, {'2', 1}, {'3', 1}, {'4', 1}, {'5', 1}, {'6', 1}, {'7', 1},
{'8', 1}, {'9', 1}, {'0', 1}, {'1', 1}, {'2', 1}, {'3', 1}, {'4', 1}, {'5', 1},
{'6', 1}, {'7', 1}, {'8', 1}, {'9', 1}, {'0', 1})
1043455 unique subsequences
Calculation time 4383 clicks, 4.383 sec
================================================================
Initial sequence: 11223344556677889900
Elements: ({'1', 2}, {'2', 2}, {'3', 2}, {'4', 2}, {'5', 2}, {'6', 2}, {'7', 2},
{'8', 2}, {'9', 2}, {'0', 2})
59048 unique subsequences
Calculation time 187 clicks, 0.187 sec
функция рекурсия(набор, результат) {
если набор пуст {
если результат уникален {
добавить результат в список уникальных
}
}
((цифра, количество), следующий_набор) = набор;
для i от 0 до количество {
рекурсия(следующий_набор, результат+(цифра i раз));
}
}
рекурсия(исходный_набор, '');
location ^~ /user_files { # Это где реально лежат файлы
internal;
root /path/to/folder;
}
location ^~ /userfiles { # Это то, куда указывают ссылки на сайте
proxy_pass http://127.0.0.1:80;
}
// Инициализируем C, надо заменить на ввод исходных данных
$C = array(1, 1, 1, 0, 0, 1, 1, 1, 0, 1);
$N = count($C);
// Добавляем в начало и конец нули
array_unshift($C, 0);
$C[] = 0;
// Создаём массив P, заполняем 0 и N+1 элементы нулями
$P[0] = 0;
$P[$N+1] = 0;
// Заполняем чётные ячейки
for ($i = 1; $i <= $N; $i += 2)
$P[$i+1] = $P[$i-1] ^ $C[$i];
// Заполняем нечётные ячейки
if (($N&1) == 0) {
// Вариант с чётным количеством ячеек
for ($i = $N; $i >= 1; $i -= 2)
$P[$i-1] = $P[$i+1] ^ $C[$i];
} else {
// Вариант с нечётным количеством ячеек
$P[1] = 0;
for ($i = 1; $i <= $N; $i -= 2)
$P[$i-1] = $P[$i+1] ^ $C[$i];
}
// Выводим результат
for ($i = 1; $i <= $N; $i++)
print $P[$i];
для i от 1 до N с шагом 2
P[i+1] = P[i-1] xor C[i];
Получили все предыдущие значения чётных ячеек.для i от N до 1 с шагом -2
P[i-1] = P[i+1] xor C[i];
P[1] = 0; // или 1
для i от 2 до N с шагом 2
P[i+1] = P[i-1] xor C[i];
#include <iostream>
template <class T> class Singleton
{
protected:
Singleton(){};
Singleton(const Singleton&);
public:
static T& GetInstance()
{
static T instance;
return instance;
}
};
class AnotherSingleton : public Singleton<AnotherSingleton>
{
private:
int i;
public:
void SomeFunc()
{
i = 10;
std::cout<< i;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
AnotherSingleton::GetInstance().SomeFunc();
return 0;
}
/*
* gameinstancehandler.h
*/
class GameInstanceHandler{
public:
GameInstanceHandler(CGameHud *instance):
mInstance(instance){}
private:
CGameHud *mInstance;
// something other here
}
#inlucde <gameinstancehandler>
int main(int argc, char **args){
CGameHudInstance *gameHub = new CGameHud(argc, args);
GameInstanceHandler *handler = new GameInstanceHandler(gameHub);
return 0;
}
int *a; // хорошо, a — это указатель.
int* b; // плохо, но допустимо.
int* c, d; // совсем плохо, c — указатель на int, d — просто переменная типа int.
int *e, *f; // при такой же записи все понятно сразу.
glVertex2f(posX + cos(_tmpPoint) * (radius / 10), posY + sin(_tmpPoint) * (radius / 10));
DELETE FROM gangs_actions
WHERE gangs_actions_id < (SELECT MAX(gangs_actions_id) - 5 FROM (SELECT * FROM gangs_actions) tmp)
DELETE FROM gangs_actions
WHERE gangs_actions_id <= (
SELECT gangs_actions_id FROM (SELECT * FROM gangs_actions) as tmp
ORDER BY gangs_actions_id DESC
LIMIT 5,1
)
DELETE FROM `gangs_actions`
WHERE `gangs_actions_id` IN (
SELECT `gangs_actions_id` FROM `gangs_actions`
ORDER BY `gangs_actions_id` DESC
LIMIT 5
)
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/testsite.local/htdocs
ServerName testsite.local
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/site.com
ServerName site.com
# Other directives here
</VirtualHost>