20分求hack呜呜
查看原帖
20分求hack呜呜
539371
ONEM楼主2022/9/24 17:05
#include<stdio.h>
#include<string.h>
int n,arr[108][108];
long long ans;
int list1[6],list2[6];
int x11[5]={ 0,-1,1,1,-1},y11[5]={0,-1,-1,1,1};//四个方向,左上,右上,右下,左下,前面的0没有用 
bool judge(int x){
	return x>=1&&x<=n;
} 
void seach1(){
	int flag=1; 
	if(list1[0]<4)return ;
	for(int i=1;i<=4;i++){
		int x=list1[i]/1000,y=list1[i]%1000;
		//printf("%d %d\n",x,y);
		if(judge(x+x11[i])&&judge(y+y11[i])&&arr[x+x11[i]][y+y11[i]]==1){
			list2[++list2[0]]=(x+x11[i])*1000+y+y11[i]; 
		}
		else{
			list2[0]=0;
			return;
		}
	}
	if(flag){
		ans++;
		memcpy(list1,list2,sizeof(list2));
		list2[0]=0;
		seach1();
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		char str[108];
        scanf("%s",str+1);
        for(int j=1;j<=n;j++){
            arr[i][j]=str[j]-'0';
        }
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(arr[i][j]==1){
				if(arr[i][j+1]==1&&arr[i+1][j]==1&&arr[i+1][j+1]==1){//当为X中心为2*2的‘1’的时候 
					list1[0]=4;
					list1[1]=i*1000+j,list1[2]=i*1000+j+1,list1[3]=(i+1)*1000+j+1,list1[4]=(i+1)*1000+j;
					ans++;
					seach1(); 
				}
				
					list1[0]=4;//一般情况,X长度为奇数的时候 
					list1[1]=list1[2]=list1[3]=list1[4]=i*1000+j;
					seach1();
				
				//printf("%d %d %d\n",i,j,ans);
			}
		}
	}
	printf("%lld",ans);
	return 0;
}

比赛上直接炸了,还自信不回头www,实在找不到hack,求大佬帮帮忙!

2022/9/24 17:05
加载中...