"程序的功能是根据输入的n个数,生成n个不同的数列。\n\n程序的设计思路是首先读取输入的n和n个数,然后对输入的数进行排序,并找到最大的两个数。然后根据最大的两个数生成数列,其中一个数列是按照递增的顺序生成,另一个数列是按照特定的规则生成。\n\n程序的结构是首先定义了一个别名为ll的数据类型,然后在主函数中进行循环,直到输入的n为负数。在每次循环中,首先读取输入的n和n个数,并初始化一些变量。然后判断特殊情况,即n为1的情况,如果是特殊情况,则按照特定的规则生成数列并输出。如果不是特殊情况,则对输入的数进行排序并找到最大的两个数。然后根据最大的两个数生成数列,并将数列存储在一个二维向量中。最后按照输出格式,输出生成的数列。\n\n总结来说,该程序的功能是生成n个不同的数列,设计思路是根据输入的数进行排序并生成数列,程序的结构是按照特定的规则生成数列并输出。\n\n#include<bits/stdc++.h> \n\nusing namespace std; \n\ntypedef long long ll; \n\nint main() \n{ \n int n; \n while(~scanf("%d",&n)) \n { \n int a[n],b[n],cnt[n]={0},maxn=INT_MIN,flag=1; \n for(int i=0;i<n;i++) \n { \n scanf("%d",&a[i]); \n b[i]=a[i]; \n a[i]*=10; \n\n if(maxn<a[i]) \n maxn=a[i]; \n } \n\n if(n==1) // 1的特殊情况 \n { \n printf("#1\n"); \n int from=-1; \n for(int i=0;i<b[0];i++) \n { \n for(int j=0;j<10;j++) \n { \n if(j==0) \n printf("%d",from+=2); \n else \n printf(" %d",from+=2); \n } \n puts(""); \n } \n continue; \n } \n\n sort(b,b+n); \n if(b[n-1]==b[n-2]) \n flag=0; \n\n\n vector v[n]; \n int last=1; \n int k=1,tmax=b[n-2]*10; \n for(int j=0;j<maxn;j++) \n { \n for(int i=0;i<n;i++) \n { \n if(a[i]>cnt[i]) \n { \n cnt[i]++; \n if(cnt[i]>tmax && flag==1) \n { \n if(last) \n { \n if(k-v[i][tmax-1]!=1) \n k--; \n last=0; \n } \n\n k++; \n v[i].push_back(k++); \n } \n else \n v[i].push_back(k++); \n } \n } \n } \n\n for(int i=0;i<n;i++) \n { \n printf("#%d\n",i+1); \n int count=0; \n for(int j=0;j<a[i];j++) \n { \n if(count==0) \n printf("%d",v[i][j]); \n else \n printf(" %d",v[i][j]); \n count++; \n\n if(count>=10) \n puts(""),count=0; \n } \n } \n } \n\n return 0; \n}

C++ 生成不同数列程序解析:功能,设计思路,结构说明

原文地址: http://www.cveoy.top/t/topic/p6oS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录