这题我认为出的不错,很考验逻辑能力,有必要记录一下
#include<iostream> #include<cstdio> #include<string.h> #include<string> #include<math.h> #include<map> #include<vector> #define maxn 405 #define INF 0x3f3f3f3f using namespace std; typedef long long ll; int n,m,k; vector<int> ve[maxn]; int a[maxn],vis[maxn]; int main() { memset(vis,0,sizeof(vis)); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; a[i]*=10; } int cnt=0,p=1; while(cnt<n) { for(int i=1;i<=n;i++) { if(ve[i].size()<a[i]) { ve[i].push_back(p); if(cnt==n-1) p=p+2; else p++; } if(ve[i].size()==a[i]&&vis[i]==0) { vis[i]=1; cnt++; } } } for(int i=1;i<=n;i++) { cout<<"#"<<i<<endl; for(int j=0;j<ve[i].size();j++) { if((j+1)%10==0) cout<<ve[i][j]<<endl; else cout<<ve[i][j]<<" "; } } return 0; }View Code