MansurL
(Hertz)
14.Июнь.2023 16:14:03
1
Задача магараджа с асмп пока что еще не решена мной,
#include <bits/stdc++.h>
using namespace std;
int cnt=0,n,m;
bool check(vector <int> vec,int x,int y)
{
bool flag=1;
for(int k=1;k<=x-1;k++)
{
if(vec[k]==0) continue;
if(abs(x-k)==abs(vec[k]-y) || y==vec[k] || (abs(x-k)==1 && abs(vec[k]-y)==2) || (abs(x-k)==2 && abs(vec[k]-y)==1))
{
flag=0;
break;
}
}
return flag;
}
void rec(vector<int> vec,int have,int pos)
{
if(pos==n)
{
if(have==m)
{
cnt++;
}
return;
}
for(int i=1;i<=n;i++)
{
if(check(vec,pos+1,i))
{
vec[pos+1]=0;
rec(vec,have,pos+1);
vec[pos+1]=i;
rec(vec,have+1,pos+1);
}
}
}
int main()
{
cin>>n>>m;
vector <int> vec(n+1);
rec(vec,0,0);
cout<<cnt;
return 0;
}
, написал такой код, вроде проходить должен, но завал
beyhan
(Batyr)
14.Июнь.2023 17:29:54
2
советую писать код через текст “как есть”, ибо на форуме поддерживается ряд языков разметок что может привести к путанице.
вот так выглядит текст "как есть"
так код:
#include <bits/stdc++.h>
using namespace std;
int cnt=0,n,m;
bool check(vector vec,int x,int y)
{
bool flag=1;
for(int k=1;k<=x-1;k++)
{
if(vec[k]==0) continue;
if(abs(x-k)==abs(vec[k]-y) || y==vec[k] || (abs(x-k)==1 && abs(vec[k]-y)==2) || (abs(x-k)==2 && abs(vec[k]-y)==1))
{
flag=0;
break;
}
}
return flag;
}
void rec(vector vec,int have,int pos)
{
if(pos==n)
{
if(have==m)
{
cnt++;
}
return;
}
for(int i=1;i<=n;i++)
{
if(check(vec,pos+1,i))
{
vec[pos+1]=0;
rec(vec,have,pos+1);
vec[pos+1]=i;
rec(vec,have+1,pos+1);
}
}
}
int main()
{
cin>>n>>m;
vector vec(n+1);
rec(vec,0,0);
cout<<cnt;
return 0;
}
upd: ну согласитесь так код выглядит гораздо красивее и эстетичнее)))) к тому же будет легче скопировать весь код в одно нажатие благодаря, дающийся данным форматом, функции скопировать весь текст в одно нажатие
6 лайков
MansurL
(Hertz)
19.Июнь.2023 09:44:44
3
101. Магараджа , простите забыл ссылку приложить
Zhabka
(Sakhmoldin Mukhammadarif)
19.Июнь.2023 11:41:23
4
Так у тебя же код не компилируется даже
MansurL
(Hertz)
19.Июнь.2023 12:40:57
8
#include <bits/stdc++.h>
using namespace std;
int cnt=0,n,m;
bool check(vector <int> vec,int x,int y)
{
bool flag=1;
for(int k=1;k<=x-1;k++)
{
if(vec[k]==0) continue;
if(abs(x-k)==abs(vec[k]-y) || y==vec[k] || (abs(x-k)==1 && abs(vec[k]-y)==2) || (abs(x-k)==2 && abs(vec[k]-y)==1))
{
flag=0;
break;
}
}
return flag;
}
void rec(vector<int> vec,int have,int pos)
{
if(pos==n)
{
if(have==m)
{
cnt++;
}
return;
}
for(int i=1;i<=n;i++)
{
if(check(vec,pos+1,i))
{
vec[pos+1]=0;
rec(vec,have,pos+1);
vec[pos+1]=i;
rec(vec,have+1,pos+1);
}
}
}
int main()
{
cin>>n>>m;
vector <int> vec(n+1);
rec(vec,0,0);
cout<<cnt;
return 0;
}
MansurL
(Hertz)
19.Июнь.2023 12:41:40
9
Можно спросить? Почему когда я вставляю код с vector <(int>) vec(n+1), у меня сохраняется только vector vec(n+1)
MansurL
(Hertz)
19.Июнь.2023 12:45:46
11
Извините за количество удаленных сообщений, просто код несколько раз переотправлял с интом, но выводился на этом форуме без <intа>
Zhabka
(Sakhmoldin Mukhammadarif)
19.Июнь.2023 13:18:56
12
Выше сказали как можно код отправлять
MansurL
(Hertz)
20.Июнь.2023 14:59:54
13
#include <bits/stdc++.h>
using namespace std;
int cnt=0,n,m;
bool check(vector <int> vec,int x,int y)
{
bool flag=1;
for(int k=1;k<=x-1;k++)
{
if(vec[k]==0) continue;
if(abs(x-k)==abs(vec[k]-y) || y==vec[k] || (abs(x-k)==1 && abs(vec[k]-y)==2) || (abs(x-k)==2 && abs(vec[k]-y)==1))
{
flag=0;
break;
}
}
return flag;
}
void rec(vector<int> vec,int have,int pos)
{
if(pos==n)
{
if(have==m)
{
cnt++;
}
return;
}
for(int i=1;i<=n;i++)
{
if(check(vec,pos+1,i))
{
vec[pos+1]=0;
rec(vec,have,pos+1);
vec[pos+1]=i;
rec(vec,have+1,pos+1);
}
}
}
int main()
{
cin>>n>>m;
vector <int> vec(n+1);
rec(vec,0,0);
cout<<cnt;
return 0;
}
MansurL
(Hertz)
20.Июнь.2023 15:00:39
14
Все, нашел функцию “как есть”, можно подсказку?
Zhabka
(Sakhmoldin Mukhammadarif)
22.Июнь.2023 17:31:39
15
Попробуй сделать так чтобы vec не был параметром рекурсии, а был обьявлен глобально и просто изменялся