gpt4 book ai didi

矩阵旋转的c++程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:24 28 4
gpt4 key购买 nike

我是新来的,如果问题不好请见谅

任务:将给定矩阵旋转180度

输入:

1
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

输出:

16 15 14 13
12 11 10 9
8 7 6 5
4 3 2 1

我尝试过的

#include <iostream>
using namespace std;

int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int a[15][15];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++) {
int p = n - 1;
for (int j = 0; j <= (n - 1) / 2; j++)
swap(a[i][j], a[i][p--]);
}
for (int j = 0; j < n; j++) {
int p = n - 1;
for (int i = 0; i < (n - 1) / 2; i++)
swap(a[i][j], a[p--][j]);
}
cout << "checking if printing all row or not" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
return 0;
}

测试用例失败

输入:

10

220 892 951 241 739 884 66 815 904 660

85 784 379 346 598 873 716 535 422 902

579 872 41 870 827 406 910 583 349 896

771 817 361 591 212 74 199 421 820 176

496 771 558 954 889 628 126 250 58 156

683 88 339 58 436 176 57 459 22 394

43 280 839 618 688 573 493 178 941 504

420 676 888 935 95 593 616 833 115 210

339 798 694 515 7 831 103 947 992 724

195 904 864 51 174 980 960 4 974 509

它的正确输出是:

    509 974 4 960 980 174 51 864 904 195

724 992 947 103 831 7 515 694 798 339

210 115 833 616 593 95 935 888 676 420

504 941 178 493 573 688 618 839 280 43

394 22 459 57 176 436 58 339 88 683

156 58 250 126 628 889 954 558 771 496

176 820 421 199 74 212 591 361 817 771

896 349 583 910 406 827 870 41 872 579

902 422 535 716 873 598 346 379 784 85

660 904 815 66 884 739 241 951 892 220

网上评委是这么说的

你的代码的输出是:

509 974 4 960 980 174 51 864 904 195

724 992 947 103 831 7 515 694 798 339

210 115 833 616 593 95 935 888 676 420

504 941 178 493 573 688 618 839 280 43

156 58 250 126 628 889 954 558 771 496

但是当我调试我的程序时,我发现整个旋转矩阵是正确的。我在 C++ 中做错了吗?我是 c++ 的新手,请帮忙。

对于输入输出约束: Question Link

最佳答案

for (int j = 0; j < n; j++) {
int p = n - 1;
for (int i = 0; i < (n - 1) / 2; i++)
swap(a[i][j], a[p--][j]);
}

在上面的内部 for 循环中,您错过了“<=”。所以应该是

for (int i = 0; i <= (n - 1) / 2; i++)

你的整个代码将是

#include <iostream>
using namespace std;

int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int a[15][15];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++) {
int p = n - 1;
for (int j = 0; j <= (n - 1) / 2; j++)
swap(a[i][j], a[i][p--]);
}
for (int j = 0; j < n; j++) {
int p = n - 1;
for (int i = 0; i <= (n - 1) / 2; i++)
swap(a[i][j], a[p--][j]);
}
cout << "checking if printing all row or not" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
return 0;
}

关于矩阵旋转的c++程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56634257/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com