problemscpp
A collection of my answers to algorithm problems in c++.
函数
acwing::acwing3527 命名空间参考

  1. 旋转矩阵
更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (acwing3527, case1)
 
 TEST (acwing3527, case2)
 

详细描述

  1. 旋转矩阵

函数说明

◆ main()

int acwing::acwing3527::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing408.cpp1443 行定义.

1443 {
1444 int matrix[3][2][2] = {
1445 {
1446 {0, 1},
1447 {-1, 0},
1448 },
1449 {{-1, 0},
1450 {0, -1}},
1451 {{0, -1},
1452 {1, 0}},
1453 };
1454 int n;
1455 cin >> n;
1456 vector<vector<int>> vec[5] = {vector(n, vector<int>(n, 0)), vector(n, vector<int>(n, 0)), vector(n, vector<int>(n, 0)), vector(n, vector<int>(n, 0)), vector(n, vector<int>(n, 0))};
1457 for(int i = 0; i < n; i++) {
1458 for(int j = 0; j < n; j++) {
1459 cin >> vec[0][i][j];
1460
1461 int i2 = matrix[0][0][0] * i + matrix[0][0][1] * j;
1462 int j2 = matrix[0][1][0] * i + matrix[0][1][1] * j + n - 1;
1463 vec[1][i2][j2] = vec[0][i][j];
1464
1465 int i3 = matrix[1][0][0] * i + matrix[1][0][1] * j + n - 1;
1466 int j3 = matrix[1][1][0] * i + matrix[1][1][1] * j + n - 1;
1467 vec[2][i3][j3] = vec[0][i][j];
1468
1469 int i4 = matrix[2][0][0] * i + matrix[2][0][1] * j + n - 1;
1470 int j4 = matrix[2][1][0] * i + matrix[2][1][1] * j;
1471 vec[3][i4][j4] = vec[0][i][j];
1472 }
1473 }
1474 for(int i = 0; i < n; i++) {
1475 for(int j = 0; j < n; j++) {
1476 cin >> vec[4][i][j];
1477 }
1478 }
1479 bool flag = true;
1480 for(int k = 0; k < 4; k++) {
1481 flag = true;
1482 for(int i = 1; i < n; i++) {
1483 for(int j = 0; j < n; j++) {
1484 if(vec[k][i][j] != vec[4][i][j]) {
1485 flag = false;
1486 break;
1487 }
1488 }
1489 if(!flag) {
1490 break;
1491 }
1492 }
1493 if(flag) {
1494 cout << k * 90;
1495 break;
1496 }
1497 }
1498 if(!flag) {
1499 cout << -1;
1500 }
1501 return 0;
1502 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST() [1/2]

acwing::acwing3527::TEST ( acwing3527  ,
case1   
)

在文件 acwing408_test.cpp1754 行定义.

1754 {
1755 istringstream in("3\n"
1756 "1 2 3\n"
1757 "4 5 6\n"
1758 "7 8 9\n"
1759 "7 4 1\n"
1760 "8 5 2\n"
1761 "9 6 3");
1762 auto out = ostringstream();
1763 main(in, out);
1764 const auto ans = out.str();
1765 ASSERT_EQ("90",
1766 ans);
1767 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/2]

acwing::acwing3527::TEST ( acwing3527  ,
case2   
)

在文件 acwing408_test.cpp1769 行定义.

1769 {
1770 istringstream in("6\n"
1771 "5 2 5 1 2 6\n"
1772 "6 4 5 2 3 4\n"
1773 "2 4 3 4 1 1\n"
1774 "5 4 1 4 6 6\n"
1775 "5 4 3 4 1 5\n"
1776 "5 5 1 1 2 5\n"
1777 "6 4 1 6 5 5\n"
1778 "2 3 1 6 1 2\n"
1779 "1 2 4 4 4 1\n"
1780 "5 5 3 1 3 1\n"
1781 "2 4 4 4 5 4\n"
1782 "5 6 2 5 5 5");
1783 auto out = ostringstream();
1784 main(in, out);
1785 const auto ans = out.str();
1786 ASSERT_EQ("-1",
1787 ans);
1788 }

引用了 main().