2 条题解

  • 0
    @ 2025-10-8 16:54:50
    #include<bits/stdc++.h>
    using namespace std;
    char s1[15][15], s2[15][15], s[15][15];
    int n; 
    bool pd()
    {
    	for(int i=1; i<=n; i++)
    		for(int j=1; j<=n; j++)
    			if(s1[i][j]!=s2[i][j]) return 0;
    	return 1;
    }
    void xz()
    {
    	char bs[15][15];
    	for(int i=1; i<=n; i++) 
    		for(int j=1; j<=n; j++) 
    			bs[j][n-i+1]=s1[i][j];
    	memcpy(s1, bs, sizeof(bs));
    }
    void fs()
    {
    	char bs[15][15];
    	for(int i=1; i<=n; i++)
    		for(int j=1; j<=n; j++)
    			bs[i][j]=s1[i][n-j+1];
    	memcpy(s1, bs, sizeof(bs));
    }
    int main()
    {
    	scanf("%d", &n);
    	for(int i=1; i<=n; i++) scanf("%s", s1[i]+1);
    	for(int i=1; i<=n; i++) scanf("%s", s2[i]+1);
    	memcpy(s, s1, sizeof(s1));
    	
    	xz(); if(pd()) {printf("1\n"); return 0;}
    	
    	xz(); if(pd()) {printf("2\n"); return 0;}
    	
    	xz(); if(pd()) {printf("3\n"); return 0;}
    	memcpy(s1, s, sizeof(s1));
    	
    	fs(); if(pd()) {printf("4\n"); return 0;}
    	memcpy(s1, s, sizeof(s));
    	
    	for(int i=1; i<=3; i++)
    	{
    		int ii=i; while(ii--) xz();    fs(); 
    		if(pd()==1) {printf("5\n"); return 0;}
    		memcpy(s1, s, sizeof(s));
    	}
    	
    	if(pd()) {printf("6\n"); return 0;}
    	
    	printf("7\n");
    	return 0;
    }
    
    • 0
      @ 2025-10-8 16:54:44
      #include<bits/stdc++.h>
      using namespace std;
      char s1[15][15], s2[15][15], s[15][15];
      int n; 
      bool pd()
      {
      	for(int i=1; i<=n; i++)
      		for(int j=1; j<=n; j++)
      			if(s1[i][j]!=s2[i][j]) return 0;
      	return 1;
      }
      void xz()
      {
      	char bs[15][15];
      	for(int i=1; i<=n; i++) 
      		for(int j=1; j<=n; j++) 
      			bs[j][n-i+1]=s1[i][j];
      	memcpy(s1, bs, sizeof(bs));
      }
      void fs()
      {
      	char bs[15][15];
      	for(int i=1; i<=n; i++)
      		for(int j=1; j<=n; j++)
      			bs[i][j]=s1[i][n-j+1];
      	memcpy(s1, bs, sizeof(bs));
      }
      int main()
      {
      	scanf("%d", &n);
      	for(int i=1; i<=n; i++) scanf("%s", s1[i]+1);
      	for(int i=1; i<=n; i++) scanf("%s", s2[i]+1);
      	memcpy(s, s1, sizeof(s1));
      	
      	xz(); if(pd()) {printf("1\n"); return 0;}
      	
      	xz(); if(pd()) {printf("2\n"); return 0;}
      	
      	xz(); if(pd()) {printf("3\n"); return 0;}
      	memcpy(s1, s, sizeof(s));
      	
      	fs(); if(pd()) {printf("4\n"); return 0;}
      	memcpy(s1, s, sizeof(s));
      	
      	for(int i=1; i<=3; i++)
      	{
      		int ii=i; while(ii--) xz();    fs(); 
      		if(pd()==1) {printf("5\n"); return 0;}
      		memcpy(s1, s, sizeof(s));
      	}
      	
      	if(pd()) {printf("6\n"); return 0;}
      	
      	printf("7\n");
      	return 0;
      }
      • 1

      【模拟】[USACO1.2] 方块转换 Transformations

      信息

      ID
      985
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      52
      已通过
      30
      上传者