同样的模拟练习:Z字形扫描
1、首先要找到m、n。要求m>=n且mn之间差距最小,然后存储vector<vector<int>> ans(m,vector<int>(n));
int m,n;//m是行数,n是列数
for(n=sqrt(num);n>=1;n--){
if(num%n==0){
m=num/n;
break;
}
}
2、用count计数来判断是否退出。用四个变量记录开始行、结束行、开始列、结束列。
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int num;
cin>>num;
vector<int> v(num);
for(int i=0;i<num;i++) cin>>v[i];
sort(v.begin(),v.end(),cmp);
int m,n;//m是行数,n是列数
for(n=sqrt(num);n>=1;n--){
if(num%n==0){
m=num/n;
break;
}
}
int count=0;
vector<vector&