#include<iostream>
using namespace std;
int words[101];
int status[101];
bool func(int ii,int jj,int n)
{
status[ii]=-status[ii];
status[jj]=-status[jj];
int t=0;
int tt=0;
for(int i=1;i<=n;++i)
{
int a = words[i];
int c = a<0?-a:a;
int b = status[c];
if(b!=a){
tt++;
}
if(status[i]<0&&b!=a)
{
t++;
}
}
status[ii]=-status[ii];
status[jj]=-status[jj];
if(tt==2&&t==1)
return true;
else
return false;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
{
status[i]=i;
}
for(int i=1;i<=n;++i)
{
cin>>words[i];
}
bool flag = false;
int i,j;
for(i=1;i<=n;++i)
{
for(j=i+1;j<=n;++j)
{
flag = func(i,j,n);
if(flag) break;
}
if(flag) break;
}
if(flag){
cout<<i<<" "<<j<<endl;
}
else
{
cout<<"No Solution"<<endl;
}
return 0;
}
本文介绍了一个使用C++实现的复杂算法,旨在解决一个特定的数学问题。通过定义状态数组和函数,该算法能够遍历一系列数字,调整它们的状态,并检查是否满足特定条件。最终,算法将输出解决方案或'NoSolution',展示了C++在处理复杂逻辑和数学运算上的强大能力。

1761

被折叠的 条评论
为什么被折叠?



