#include<bits/stdc++.h>
using namespace std;
int n;
int ax,ay,az;
int bx,by,bz;
int INF=114514;
int cnt=0;
bool check(int i,int j,int k){
int if2=i-2,iz2=i+2,jf2=j-2,jz2=j+2,kf2=k-2,kz2=k+2;
int iif=-INF,iiz=INF,jjf=-INF,jjz=INF,kkf=-INF,kkz=INF;
if(if2<1){
iif=i;//从1到i
if2=i+n-2;//或从i+n-2到n
}
if(iz2>n){
iiz=i;
iz2=i-n+2;
}
if(jf2<1){
jjf=j;
jf2=j+n-2;
}
if(jz2>n){
jjz=j;
jz2=j-n+2;
}
if(kf2<1){
kkf=k;
kf2=k+n-2;
}
if(kz2>n){
kkz=k;
kz2=k-n+2;
}
cout<<4;
if(((ax<=iif||ax>=if2)&&(ax>=iiz||ax<=iz2)) && ((ay<=jjf||ay>=jf2)&&(ay>=jjz||ay<=jz2)) && ((az<=kkf||az>=kf2)&&(az>=kkz||az<=kz2)))
return true;
else if(((bx<=iif||bx>=if2)&&(bx>=iiz||bx<=iz2)) && ((by<=jjf||by>=jf2)&&(by>=jjz||by<=jz2)) && ((bz<=kkf||bz>=kf2)&&(bz>=kkz||bz<=kz2)))
return true;
else
return false;
}
int main()
{
int x,y,z;
cin>>n;
cin>>ax>>ay>>az;
cin>>bx>>by>>bz;
if(n==1){
cout<<1;
return 0;
}
// cout<<check(1,2,2)<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
if(check(i,j,k)==true){
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
}
}
}
}
cout<<cnt;
return 0;
}
自己做的↑
借鉴题解的↓
#include<bits/stdc++.h>
using namespace std;
int n;
int x,y,z;
int a,b,c;
int cnt;
bool vis[105][105][105];
int main()
{
cin>>n;
cin>>x>>y>>z;
cin>>a>>b>>c;
if(n==1){
cout<<1;
return 0;
}
for(int i=x-2;i<=x+2;i++){
for(int j=y-2;j<=y+2;j++){
for(int k=z-2;k<=z+2;k++){
if(vis[(i+n)%n][(j+n)%n][(k+n)%n]==false){//没算过
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
vis[(i+n)%n][(j+n)%n][(k+n)%n]=true;
}
}
}
}
for(int i=a-2;i<=a+2;i++){
for(int j=b-2;j<=b+2;j++){
for(int k=c-2;k<=c+2;k++){
if(vis[(i+n)%n][(j+n)%n][(k+n)%n]==false){
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
vis[(i+n)%n][(j+n)%n][(k+n)%n]=true;
}
}
}
}
cout<<cnt;
return 0;
}