Đối với sắp xếp tăng dần theo chiều xoắn ốc, hay là tạo mảng theo chiều xoắn ốc thì bạn cũng làm như này.
Bạn cứ nhét những phần tử tăng dần từ vòng ngoài, sau đó thu hẹp không gian xoắn ốc lại.
[I]#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int N, M, K=0;
cin>>N>>M;
int **a; // khai báo con trỏ cấp 2
//--------- cấp phát bộ nhớ cho mảng 2 chiều
a=new int*[N+1];
for (int i=1; i<=N; i++){
a[i]=new int[M+1];
}
//----------- xử lí xoắn ốc
int d1=1, c1=N, d2=1, c2=M;
while (d1<=c1){
for (int i=d2; i<=c2; i++){
K++; a[d1][i]=K;
}
if (K==N*M) break;
for (int i=d1+1; i<=c1; i++){
K++; a[i][c2]=K;
}
if (K==N*M) break;
for (int i=c2-1; i>=d2; i--){
K++; a[c1][i]=K;
}
if (K==N*M) break;
for (int i=c1-1; i>d1; i--){
K++; a[i][d1]=K;
}
if (K==N*M) break;
d1++; c1--; d2++; c2--;
}
//--------------------------------
for (int i=1; i<=N; i++){
for (int j=1; j<=M; j++)
printf("%4d", a[i][j]);
printf("\n");
}
//------------- Giải phóng bộ nhớ
for (int i=1; i<=N; i++)
delete []a;
return 0;
}
Announcement
Collapse
No announcement yet.
bài tập mảng 2 chiều chưa biết cách làm
Collapse
X
-
Originally posted by 14520769 View Postmình còn giữ code bài 2 mà không biết có nên đưa thẳng z không
Leave a comment:
-
bài tập mảng 2 chiều chưa biết cách làm
Bai 1 : Sắp xếp ma trận tăng dần từ trái qua phải và từ trên xuống dưới.
Bài 2: Tạo ma trận vuông xoắn ốc.
Nhờ các anh chị đi trước chỉ giúp em với ạ à e chưa học hàm con nha m.n ^_^ hì :3 mong ace giúp đỡ viết theo C++ hoặc cho e cái code thuật toán với ạ . tks mọi ngườiTags: None
Leave a comment: