下标字典序最小是什么意思

比如选择货物下标字典序最小的一组。例如货物的质量为4 3 2 1,卡车能够装载的质量为5时,第一次会选择4 1而不是2 3。

c++

1个回答

当下标是用字符串构成的数字的时候,就有两个顺序,字典序和数字自然的顺序
按照自然顺序,1 2 3 4 5 6 7 8 9 10 11
按照字典序,每个元素当作字符串,因此10、11以1开头排在2前面,1 10 11 2 3 4 5 6 7 8 9
给每个元素的一个序号,比如你说的4 3 2 1,排序出来,1排在第一个,2是第二个,等等,所以它对应的序数就是4(4) 3(3) 2(2) 1(1)
无论如何看,4 1的字典序的和和2 3也是一样的。所以你的问题很奇怪。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
控件参数在VB编程中怎么查找对应传来的数组下标是原二重数组的子数组的哪一个下标的序数?
控件参数在VB编程中怎么查找对应传来的数组下标是原二重数组的子数组的哪一个下标的序数?怎么判断下标序数是哪个控件?
实现操作系统页面置换算法,调用的ListUtils.java中的代码都是什么意思?能否帮忙解释一下原理?
我在用Java做操作系统中的页面置换算法,实现FIFO,CLOCK和LRU这三种算法,在这三个算法实现的过程中,都调用了ListUtils.java,但是我不懂ListUtils.java中的代码是什么意思,导致我其他的代码也看不懂。向各位大神请教一下,能否解释一下ListUtils.java中代码的含义和原理?感谢感谢! 另外在算法中的 Object[] strList = list.toArray(); for(int column = 0; column < list.size(); column++) { FIFOData[column][i+1] = strList[column]; } 这两行代码是什么意思呢?我看在每一个页面置换算法中都有这两行代码,但是我看不懂!麻烦各位大佬帮忙看一下!万分感谢! 下面贴上代码: ListUtils.java ``` package utils; import java.util.List; public class ListUtils { public ListUtils() { } /** * 输出 * @param list 将List转为数组并输出, out: 2, 3, 4 * @return */ public static String listToString(List list){ StringBuffer content = new StringBuffer(); for(int i = 0; i < list.size(); i++){ content.append(list.get(i)); if(i < list.size() - 1){ content.append(","); } } return content.toString(); } /** * 在list中查找是否有str * @param list * @param str * @return */ public static boolean find(List<String> list, String str){ boolean flag = false; for(String lis : list){ if(lis.equals(str)){ flag = true; } } return flag; } /** * 在List中查找是否有String,如果有返回下标, 否则返回 -1 * @param list * @param str * @return */ public static int findIndex(List<String> list, String str) { int index = 0; for(String lis : list) { if(lis.equals(str)) { return index; } index++; } return -1; } public static boolean clockJudge(String[] clock, int index) { if(clock[index].equals("0")) { return true; } return false; } /** * * @param index 下标 * @param clock 时钟 * @param range 当前使用内存块 * @return */ public static int findZero(int index, String[] clock, int range) { while(true) { if(clock[index].equals("0")) { break; }else { clock[index] = "0"; index++; if(index > range-1) { index = Math.abs(range - index); } } } return index; } /** * 在数组中查找是否存在该字符串 * @param obj * @param str * @return */ public static boolean strJudge(Object[] obj, String str) { boolean flag = false; if(obj == null) { return flag; } for(int i = 0; i < obj.length; i++) { if(str.equals(obj[i])) { flag = true; break; } } return flag; } /** * 获取二维数组中同一列的行的长度 * @param str 数据 * @param length 二维数组的列 * @param memory 内存块 * @return * */ public static int findNull(Object[][] str, int length, int memory) { int index = 0; if(str == null) { return -1; } for(int i = 0; i < memory; i++) { if(str[i][length] != null) { index = i; } } return index; } } ``` 在FIFO中调用: ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576503707_674210.png) 在URL中调用: ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576503832_866034.png) 在Clock中调用: ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576503948_604271.png)
Kruskal算法实现最小生成树主函数的第一行的aaa就无法输出是为什么
Kruskal算法实现最小生成树主函数的第一行的aaa就无法输出是为什么 ``` #include<stdio.h> #include<iostream> #define MaxInt 32767 //表示极大值 #define MVNum 10000 //最大顶点数 using namespace std; /*创建图*/ int v1,v2,w; int vs1,vs2; typedef struct { char vexs[MVNum];//顶点表 int arcs[MVNum][MVNum];//邻接矩阵 int vexnum,arcnum;//图的当前点数和边数 }AMGraph; /*设置一个辅助结构体数组Edge:储存边的信息,包括边的两个顶点信息和权值 */ typedef struct { int a,b;//表示枢纽a和枢纽b int time;//两个枢纽之间的修建天数 } Edge;//关键字的类型 /*定义一个辅助数组 */ int Vexset[MVNum]; /*定义一个LocaleVex用来求得V在图G中的位置,及顶点数组的下标 */ int LocaleVex(AMGraph &G,int v) { int m; for(m=0;m<G.vexnum;++m) if(G.vexs[m]==v) return m; } /*采用邻接矩阵表示法,创建无向网 */ void CreateUDN(AMGraph &G) { int i,j,k; cout<<"请输入交通枢纽的数量和候选隧道的数量"<<endl; cin>>G.vexnum>>G.arcnum;//输入总顶点数和总边数,即总枢纽个数和隧道数 fflush(stdin); cout<<"依次输入各个枢纽"<<endl; for(i=0; i<G.vexnum; ++i) //依次输入点的信息 { cin>>G.vexs[i]; fflush(stdin); } for(i=0; i<G.vexnum; ++i) //初始化邻接矩阵,边的权值 均置为极大值 { for(j=0; j<G.vexnum; ++j) G.arcs[i][j]=MaxInt; } cout<<"请写出每条隧道间对应的枢纽a和枢纽b,以及修建天数"<<endl; for(k=0;k<G.arcnum;++k) { cin>>v1>>v2>>w; //输入一条边依附的顶点即权值 i=LocaleVex(G,v1);j=LocaleVex(G,v2); //确定v1和v2在G中的位置,即顶点数组的下标 G.arcs[i][j]=w; //边<v1,v2>的权值置为w G.arcs[j][i]=G.arcs[i][j]; //置<v1,V2>的对称边<v2,v1>的权值w } } /* 交换权值 以及头和尾 */ void swapn(Edge *edges, int i, int j) { int temp; temp = edges[i].a; edges[i].a = edges[j].a; edges[j].a = temp; temp = edges[i].b; edges[i].b = edges[j].b; edges[j].b = temp; temp = edges[i].time; edges[i].time = edges[j].time; edges[j].time = temp; } /* 对权值进行排序 */ void sort(Edge edges[], AMGraph *G) { for(int i = 0; i < G->arcnum; i++) { for(int j = i + 1; j < G->arcnum; j++) { if(edges[i].time > edges[j].time) swapn(edges, i, j); } } cout<<"权排序之后的为:"<<endl; for (int i = 0; i < G->arcnum; i++) { cout<<edges[i].a<<edges[i].b<<edges[i].time<<endl; } } /*生成最小生成树*/ void MiniSpanTree_Kruskal(AMGraph &G) { int i,j,n,m; int k=0; Edge edges[1000]; //用来构建边集数组并排序********************* for(i = 0; i < G.vexnum - 1; i++) { for(j = i + 1; j < G.vexnum; j++) { if(G.arcs[i][j] < MaxInt) { edges[k].a = i; edges[k].b = j; edges[k].time = G.arcs[i][j]; k++; } } } sort(edges, &G); //******************************************* for(i=0;i<G.vexnum;++i) Vexset[i]=i; //初始化数组值为0 for(i=0;i<G.arcnum;++i)//循环每一条边 { v1=LocaleVex(G,edges[i].a); v2=LocaleVex(G,edges[i].b); vs1=Vexset[v1]; vs2=Vexset[v2]; if(vs1!=vs2)/* 假如vs1与vs2不等,说明此边没有与现有的生成树形成环路 */ { cout<<edges[i].a<<edges[i].b<<"答案:"<<edges[i].time; for(j=0;j<G.vexnum;++j) if(Vexset[j]==vs2) Vexset[j]=vs1; } } } //打印图 void printGraph(AMGraph g) { int i, j; for(i = 0; i < g.vexnum; i++) { for(j = 0; j < g.vexnum; j++) { cout<<g.arcs[i][j]; } cout<<endl; } } int main() { cout<<"aaaaaaaaaa"; AMGraph G; cout<<"*****************修建铁路*****************"<<endl<<endl; CreateUDN(G); printGraph(G); MiniSpanTree_Kruskal(G); return 0; } ```
大一C语言,对各位大佬应该很简单
数组指针指向一行n个元素的二维数组时,当数组下标[]里面的值超过n时,是自动跳到下一行还是为空。
C++哈夫曼编码译码器设计与实现并对哈夫曼树进行先序遍历。
现在就是差一个先序遍历的要求没有做到 ``` #include<stdio.h> #include<string.h> #include<stdlib.h> //树结点定义 typedef struct { int weight; int parent; int lchild; int rchild; }HTNode,*HuffmanTree; static char N[100];//用于保存正文 //哈弗曼编码,char型二级指针 typedef char **HuffmanCode; //封装最小权结点和次小权结点 typedef struct { int s1; int s2; }MinCode; //函数声明 void Error(char *message); HuffmanCode HuffmanCoding(HuffmanTree &HT,HuffmanCode HC,int *w,int n); MinCode Select(HuffmanTree HT,int n); //当输入1个结点时的错误提示 void Error(char *message) { fprintf(stderr,"Error:%s\n",message); //根据指定的格式,向输出流写入数据 exit(1); } //构造哈夫曼树HT,编码存放在HC中,w为权值,n为结点个数 HuffmanCode HuffmanCoding(HuffmanTree &HT,HuffmanCode HC,int *w,int n) { int i,s1=0,s2=0; HuffmanTree p; char *cd; int f,c,start,m; MinCode min; if(n<=1) { Error("Code too small!");//只有一个结点不进行编码,直接exit(1)退出。 } m=2*n-1;//哈弗曼编码需要开辟的结点大小为2n-1 HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//开辟哈夫曼树结点空间 m+1 ,动态内存分配。 //初始化n个叶子结点,w[0] = 0,main函数已赋值 for(p=HT,i=0;i<=n;i++,p++,w++) { p->weight=*w; p->parent=0; p->lchild=0; p->rchild=0; } //将n-1个非叶子结点的初始化 for(;i<=m;i++,p++) { p->weight=0; p->parent=0; p->lchild=0; p->rchild=0; } //构造哈夫曼树 for(i=n+1;i<=m;i++) { min=Select(HT,i-1);//找出最小和次小的两个结点 s1=min.s1 ; //最小结点下标 s2=min.s2;//次小结点下标 HT[s1].parent=i; HT[s2].parent=i; HT[i].lchild=s1; HT[i].rchild=s2; HT[i].weight=HT[s1].weight+HT[s2].weight; } //打印哈弗曼树 printf("HT List:\n"); printf("Number\t\tweight\t\tparent\t\tlchild\t\trchild\n"); for(i=1;i<=m;i++) { printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\t\n",i,HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild); } //从叶子结点到根节点求每个字符的哈弗曼编码 HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); cd=(char *)malloc(n*sizeof(char *));//为哈弗曼编码动态分配空间 cd[n-1]='\0';//如:3个结点编码最长为2。cd[3-1] = '\0'; //求叶子结点的哈弗曼编码 for(i=1;i<=n;i++) { start=n-1; //定义左子树为0,右子树为1 /* 从最下面的1号节点开始往顶部编码(逆序存放),然后编码2号节点,3号...... */ for(c=i,f=HT[i].parent; f!=0; c=f,f=HT[f].parent) { if(HT[f].lchild==c) cd[--start]='0'; else cd[--start]='1'; } //为第i个字符分配编码空间 HC[i]=(char *)malloc((n-start)*sizeof(char *)); //将当前求出结点的哈弗曼编码复制到HC strcpy(HC[i],&cd[start]); } free(cd); return HC; } MinCode Select(HuffmanTree HT,int n) { int min,secmin; int temp = 0; int i,s1,s2,tempi = 0; MinCode code ; s1=1; s2=1; min = 9999; //找出权值最小的结点,下标保存在s1中 for(i=1;i<=n;i++) { if(HT[i].weight<min && HT[i].parent==0) { min=HT[i].weight; s1=i; } } secmin = 9999; //找出权值次小的结点,下标保存在s2中 for(i=1;i<=n;i++) { if((HT[i].weight<secmin) && (i!=s1) && HT[i].parent==0) { secmin=HT[i].weight; s2=i; } } //放进封装中 code.s1=s1; code.s2=s2; return code; } void HuffmanTranslateCoding(HuffmanTree HT, int n,char* ch) {//译码过程 int m=2*n-1; int i,j=0; printf("After Translation:"); while(ch[j]!='\0')//ch[]:你输入的要译码的0101010串 { i=m; while(0 != HT[i].lchild && 0 != HT[i].rchild)//从顶部找到最下面 { if('0' == ch[j])//0 往左子树走 { i=HT[i].lchild; } else//1 往右子树走 { i=HT[i].rchild; } ++j;//下一个路径 } printf("%c",N[i-1]);//打印出来 } printf("\n"); } void main() { HuffmanTree HT=NULL; HuffmanCode HC=NULL; int *w=NULL; int i,n; char tran[100]; printf("Input N(char):"); gets(N); fflush(stdin); n = strlen(N); w=(int *)malloc((n+1)*sizeof(int *));//开辟n+1个长度的int指针空间 w[0]=0; printf("Enter weight:\n"); //输入结点权值 for(i=1;i<=n;i++) { printf("w[%d]=",i); scanf("%d",&w[i]); } fflush(stdin); //清空输入缓冲区 //构造哈夫曼树HT,编码存放在HC中,w为权值,n为结点个数 HC=HuffmanCoding(HT,HC,w,n); //输出哈弗曼编码 printf("HuffmanCode:\n"); printf("Number\t\tWeight\t\tCode\n"); for(i=1;i<=n;i++) { printf("%c\t\t%d\t\t%s\n",N[i-1],w[i],HC[i]); } fflush(stdin); //译码过程 printf("Input HuffmanTranslateCoding:"); gets(tran); HuffmanTranslateCoding(HT, n, tran); return; } ```题目要求:九、哈夫曼编码译码器设计与实现 编写程序设计哈夫曼编码译码器。 (1)根据输入的权值建立哈夫曼树。 (2)对建立好的哈夫曼树进行先序遍历。 (3)利用建好的哈夫曼树生成哈夫曼编码,并显示生成的各字符的哈夫曼编码。 (4)根据输入的字符进行译码。 (5)显示功能:以先序遍历的顺序显示建立好的哈夫曼树。显示哈夫曼编码和译码的结果。
长度为10的整型数组,数组的10个数由键盘输入,输入非负整数n(n<10),将下标为n的元素从数组删除,并将其后的元素前移,输出删除一个元素后的数组内所有数据。
长度为10的整型数组,数组的10个数由键盘输入,输入非负整数n(n<10),将下标为n的元素从数组删除,并将其后的元素前移,输出删除一个元素后的数组内所有数据。
c语言小白 数组问题!
## # 数组中,怎么以-1为结束标志,但不作为读取数。 输入一组数据以后,以-1作为结束标志,但是每次-1也会作为读取书参与运算,该怎么办? **比如这题:** 输入一组数据(不超过20个),存入数组中,并找出最小值及其所在的下标(一组数据以-1作为结束标志) 实在困惑!
下标索引必须为正整数类型或逻辑类型。 出错 main3 (line 56) dw=I(PY1:PY2-8,PX1:PX2,:);
下标索引必须为正整数类型或逻辑类型。 出错 main3 (line 56) dw=I(PY1:PY2-8,PX1:PX2,:);![图片说明](https://img-ask.csdn.net/upload/201912/12/1576137363_524680.jpg) 这个问题弄了我一整天了。。。 有没有大神能解答yi'xia
别人写的蛇形矩阵的代码,为什么是K-1?圈起来的部分的下标的规律都是怎么找出来的?
![图片说明](https://img-ask.csdn.net/upload/201911/12/1573559667_559097.jpg)![图片说明](https://img-ask.csdn.net/upload/201911/12/1573559717_814956.png)
java poi导出excel文档 后台报下标越界 但文档正常导出且损坏
public static SXSSFWorkbook createCSVUtil2(int startRow, String sheetName, SXSSFWorkbook wb, Map<String, List<CellModel>> cellListMap, Integer cellRowNum, List<LinkedHashMap> exportData, int[] columnWidth, int totalcolumn, GgreportingtemplateDto ggreportingtemplateDto, int countRow) throws Exception { // 设置表格名称 SXSSFSheet sheet = (SXSSFSheet) wb.createSheet(sheetName); sheet.trackAllColumnsForAutoSizing(); // 设置表格标题 一般都是第一行第一个格子 // 标题样式 if (ggreportingtemplateDto.getTitle() != null) { XSSFCellStyle cellStyleTitle = (XSSFCellStyle) wb.createCellStyle(); cellStyleTitle.setWrapText(true); SXSSFRow rowTitle = (SXSSFRow) sheet.createRow(0); XSSFFont fontTitle = (XSSFFont) wb.createFont(); fontTitle.setFontHeightInPoints((short) 16); cellStyleTitle.setFont(fontTitle); // 合并标题单元格 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, totalcolumn - 1)); for (int i = 0; i < totalcolumn; i++) { if (i == 0) { SXSSFCell cell = (SXSSFCell) rowTitle.createCell(0); cell.setCellValue(ggreportingtemplateDto.getTitle()); cell.setCellStyle(cellStyleTitle); } else { SXSSFCell cell = (SXSSFCell) rowTitle.createCell(i); cell.setCellStyle(cellStyleTitle); } } } if (ggreportingtemplateDto.getCondition() != null) { // 设置筛选条件格子 一般是第二行第一列 // 条件样式 XSSFCellStyle cellStyleCondition = (XSSFCellStyle) wb.createCellStyle(); cellStyleCondition.setWrapText(true); SXSSFRow rowCondition = (SXSSFRow) sheet.createRow(1); XSSFFont fontCondition = (XSSFFont) wb.createFont(); fontCondition.setFontHeightInPoints((short) 16); cellStyleCondition.setFont(fontCondition); // 合并条件单元格 sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 4)); for (int i = 0; i < 4; i++) { if (i == 0) { SXSSFCell cell = (SXSSFCell) rowCondition.createCell(0); cell.setCellValue(ggreportingtemplateDto.getCondition()); cell.setCellStyle(cellStyleCondition); } else { SXSSFCell cell = (SXSSFCell) rowCondition.createCell(i); cell.setCellStyle(cellStyleCondition); } } } // 设置表格通用样式 XSSFCellStyle cellStyle = (XSSFCellStyle) wb.createCellStyle(); // 设置边框 // 设置单元格内容水平对齐 cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 设置单元格内容垂直对齐 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 设置自动换行 cellStyle.setWrapText(true); // 设置双边框 XSSFCellStyle cellStyleDouble = (XSSFCellStyle) wb.createCellStyle(); // 设置边框 // 设置单元格内容水平对齐 cellStyleDouble.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 设置单元格内容垂直对齐 cellStyleDouble.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 设置自动换行 cellStyleDouble.setWrapText(true); // 合并单元格 for (int t = 0; t < cellRowNum; t++) { SXSSFRow row = (SXSSFRow) sheet.createRow(t + startRow); List<CellModel> cellNameList = cellListMap.get(String.valueOf(t)); for (CellModel cellModel : cellNameList) { // 如果被合并的元素只占用了一个单元格则不进行合并 if (cellModel.getStartColumn() == cellModel.getEndColumn() && cellModel.getEndRow() == cellModel.getStartRow()) { continue; } sheet.addMergedRegion(new CellRangeAddress(cellModel.getStartRow(), cellModel.getEndRow(), cellModel.getStartColumn(), cellModel.getEndColumn())); } // create的cell Set<Integer> create = new HashSet<Integer>(); for (int i = 0; i < cellNameList.size(); i++) { CellModel cellModel = cellNameList.get(i); // 遍历插入表头 SXSSFCell cell = (SXSSFCell) row.createCell(cellModel.getStartColumn()); // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); // 设置行高 if (i == 1) { row.setHeight((short) 500); } cellStyle.setFont(font); cell.setCellValue(cellModel.getCellName()); cell.setCellStyle(cellStyle); create.add(cellModel.getStartColumn()); } // 把所有没有create的cell都create for (int i = 0; i < totalcolumn; i++) { if (!(create.contains(i))) { // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); cellStyle.setFont(font); SXSSFCell cell = (SXSSFCell) row.createCell(i); cell.setCellStyle(cellStyle); } } } for (LinkedHashMap hashMap : exportData) { SXSSFRow rowValue = (SXSSFRow) sheet.createRow(cellRowNum + startRow); Iterator<Map.Entry> iteratorRow = hashMap.entrySet().iterator(); while (iteratorRow.hasNext()) { Map.Entry entryRow = iteratorRow.next(); Integer key = Integer.valueOf(entryRow.getKey().toString()); String value = ""; if (entryRow.getValue() != null) { value = entryRow.getValue().toString(); } else { value = ""; } SXSSFCell cellValue = (SXSSFCell) rowValue.createCell(key - 1); // 设置字体 XSSFFont font = (XSSFFont) wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short) 8); cellValue.setCellValue(value); cellStyle.setFont(font); cellValue.setCellStyle(cellStyle); } cellRowNum++; } // 设置备注栏 List<String> reMarkList = ggreportingtemplateDto.getRemake(); if (reMarkList != null) { for (int i = 0; i < reMarkList.size() + 1; i++) { int rowNum = i + startRow + cellRowNum + 1; XSSFCellStyle cellStyleRemake = (XSSFCellStyle) wb.createCellStyle(); SXSSFRow rowRemake = (SXSSFRow) sheet.createRow(rowNum); XSSFFont fontRemake = (XSSFFont) wb.createFont(); fontRemake.setFontHeightInPoints((short) 8); cellStyleRemake.setFont(fontRemake); String cellValue = "Notes:"; // 合并条件单元格 if (i != 0) { sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 4)); cellValue = reMarkList.get(i - 1); SXSSFCell cell = (SXSSFCell) rowRemake.createCell(0); cell.setCellValue(cellValue); cell.setCellStyle(cellStyleRemake); } else { SXSSFCell cell = (SXSSFCell) rowRemake.createCell(0); cell.setCellValue(cellValue); cell.setCellStyle(cellStyleRemake); } } } // 设置列宽 if (columnWidth != null) { for (int i = 0; i < columnWidth.length; i++) { sheet.setColumnWidth(i, columnWidth[i]); } } return wb; } 以上是我生成sheet表的内容 //exceptional Rpt public SXSSFWorkbook exceptionalRpt (GgreportingtemplateDto ggreportingtemplateDto, String startInputDate,String endInputDate) throws Exception { // 设置最大数据行数 SXSSFWorkbook wb = new SXSSFWorkbook(5050);//这里之前看到是说能设置这个表格最多能含有多少数据 Map<String, List<CellModel>> map = new HashMap<String, List<CellModel>>(); // 设置数据 // 第一级表头 List<CellModel> firstRow = new ArrayList<CellModel>(); CellModel cellModel1 = new CellModel(); // 总占用1行 Integer cellRow = 1; cellModel1.setCellName("Member English Name"); cellModel1.setStartRow(0); cellModel1.setEndRow(0); cellModel1.setStartColumn(0); cellModel1.setEndColumn(0); CellModel cellModel2 = new CellModel(); cellModel2.setCellName("Member Chinese Name"); cellModel2.setStartRow(0); cellModel2.setEndRow(0); cellModel2.setStartColumn(1); cellModel2.setEndColumn(1); CellModel cellModel3 = new CellModel(); cellModel3.setCellName("Staff No."); cellModel3.setStartRow(0); cellModel3.setEndRow(0); cellModel3.setStartColumn(2); cellModel3.setEndColumn(2); CellModel cellModel4 = new CellModel(); cellModel4.setCellName("HKID/Passport No."); cellModel4.setStartRow(0); cellModel4.setEndRow(0); cellModel4.setStartColumn(3); cellModel4.setEndColumn(3); CellModel cellModel5 = new CellModel(); cellModel5.setCellName("Sex"); cellModel5.setStartRow(0); cellModel5.setEndRow(0); cellModel5.setStartColumn(4); cellModel5.setEndColumn(4); CellModel cellModel6 = new CellModel(); cellModel6.setCellName("Plan Code"); cellModel6.setStartRow(0); cellModel6.setEndRow(0); cellModel6.setStartColumn(5); cellModel6.setEndColumn(5); CellModel cellModel7 = new CellModel(); cellModel7.setCellName("Plan Description"); cellModel7.setStartRow(0); cellModel7.setEndRow(0); cellModel7.setStartColumn(6); cellModel7.setEndColumn(6); CellModel cellModel8 = new CellModel(); cellModel8.setCellName("Effective Date"); cellModel8.setStartRow(0); cellModel8.setEndRow(0); cellModel8.setStartColumn(7); cellModel8.setEndColumn(7); CellModel cellModel9 = new CellModel(); cellModel9.setCellName("Status"); cellModel9.setStartRow(0); cellModel9.setEndRow(0); cellModel9.setStartColumn(8); cellModel9.setEndColumn(8); firstRow.add(cellModel1); firstRow.add(cellModel2); firstRow.add(cellModel3); firstRow.add(cellModel4); firstRow.add(cellModel5); firstRow.add(cellModel6); firstRow.add(cellModel7); firstRow.add(cellModel8); firstRow.add(cellModel9); map.put("0", firstRow); // 业务数据 List<LinkedHashMap> exportData = new ArrayList<LinkedHashMap>(); GuPolicyCopyItemMedgMembDto guPolicyCopyItemMedgMembDto = new GuPolicyCopyItemMedgMembDto(); List<GuPolicyCopyItemMedgMembDto> list = ServiceManager.prpall.getGuPolicyCopyItemMedgMembService().findALL(guPolicyCopyItemMedgMembDto, null);//这里查询出来是295条 //增加数据 用这端代码增加5000条数据 /*for (int i = 0; i < 5000; i++) { list.add((GuPolicyCopyItemMedgMembDto)list.get(0)); }*/ int countRow = 0; for (int i = 0; i < list.size(); i++) { GuPolicyCopyItemMedgMembDto data = (GuPolicyCopyItemMedgMembDto) list.get(i); LinkedHashMap<String,String> row = new LinkedHashMap<String,String>(); String struts = ""; String ename = ""; String cname = ""; String idno = ""; String staffno = ""; String sex = ""; String rationType = ""; String rationName = ""; String entryDate = ""; String chineseName = ""; String hKIDandPassportNo = ""; if(data.getFlag()==null||data.getFlag().equals("I")) { struts = "Add"; }else if(data.getFlag().equals("U")){ struts = "Amendment"; }else if(data.getFlag().equals("D")){ struts = "Deletion"; }else if(data.getFlag().equals("B")){ struts = "Cancellation"; } if(data.getClientEName() != null&&!(data.getClientEName().equals(""))) { ename = data.getClientEName(); } if(data.getClientCName() != null&&!(data.getClientCName().equals(""))) { cname = data.getClientCName(); } if(data.getIdNo() != null&&!(data.getIdNo().equals(""))) { idno = data.getIdNo(); } if(data.getStaffNo() != null&&!(data.getStaffNo().equals(""))) { staffno = data.getStaffNo(); } if(data.getSex() != null&&!(data.getSex().equals(""))) { sex = data.getSex(); } if(data.getRationType() != null&&!(data.getRationType().equals(""))) { rationType = data.getRationType(); } if(data.getRationName() != null&&!(data.getRationName().equals(""))) { rationName = data.getRationName(); } if(data.getEntryDate() != null) { entryDate = sim.format(data.getEntryDate()); } /*row.put("1", ""+ename+""); row.put("2", ""+cname+""); row.put("3", ""+staffno+""); row.put("4", ""+idno+""); row.put("5", ""+sex+""); row.put("6", ""+rationType+""); row.put("7", ""+rationName+""); row.put("8", ""+entryDate+""); row.put("9", ""+struts+"");*/ row.put("1", "1"); row.put("2", "2"); row.put("3", "3"); row.put("4", "4"); row.put("5", "5"); row.put("6", "6"); row.put("7", "7"); row.put("8", "8"); row.put("9", "9"); exportData.add(row); countRow++; } // 用于写入文件 // 列宽数组 int[] columnWidth = { 10000, 7500, 5000, 7500, 5000, 7500, 10000, 5000, 5000 }; // 报表标题 ggreportingtemplateDto.setTitle(null); List<String> remakeList = null; // 报表备注 ggreportingtemplateDto.setRemake(remakeList); ggreportingtemplateDto.setCondition(null); //数据分页 if(exportData.size()>5000) { double size = exportData.size(); double divisor = size/5000; int forNumber = (new Double(Math.ceil(divisor))).intValue(); for (int i = 0; i < forNumber; i++) { if((i+1)==forNumber) { List<LinkedHashMap> exportDataTemp = exportData.subList(0+(i*5000), exportData.size()-1); wb = this.createCSVUtil2(0, "Exceptional Rpt"+(i+1), wb, map, cellRow, exportDataTemp, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); }else { List<LinkedHashMap> exportDataTemp = exportData.subList(0+(i*5000), 5000+(i*5000 )); wb = this.createCSVUtil2(0, "Exceptional Rpt"+(i+1), wb, map, cellRow, exportDataTemp, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); } } }else { wb = this.createCSVUtil2(0, "Exceptional Rpt", wb, map, cellRow, exportData, columnWidth, columnWidth.length, ggreportingtemplateDto, 0); } /*wb = this.createCSVUtil2(0, "Exceptional Rpt", wb, map, cellRow, exportData, columnWidth, columnWidth.length, ggreportingtemplateDto, 0);*/ return wb; } 一开始SXSSFWorkbook wb = new SXSSFWorkbook(5050)这里的值给的5000 ,然后当数据量大于5000时直接报错,文件不能正常导出,然后我把5000改成7000,会报错但是文件能导出,是损坏文件,一条数据都没有,后来修改成分页导出,自己测试的时候任然报了数组下标越界,且越界的下标为负值,文件能正常导出,但导出的文件显示已损坏,看不到数据。报错代码图片以上传,求大神解答,解答有效我微信转账请大神喝奶茶 java.lang.ArrayIndexOutOfBoundsException: -20527 at java.util.ArrayList.elementData(ArrayList.java:418) at java.util.ArrayList.get(ArrayList.java:431) at org.apache.poi.xssf.model.StylesTable.getFontAt(StylesTable.java:386) at org.apache.poi.xssf.usermodel.XSSFWorkbook.getFontAt(XSSFWorkbook.java:954) at org.apache.poi.xssf.streaming.SXSSFWorkbook.getFontAt(SXSSFWorkbook.java:857) at org.apache.poi.ss.util.SheetUtil.getCellWidth(SheetUtil.java:148) at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidth(AutoSizeColumnTracker.java:367) at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidths(AutoSizeColumnTracker.java:333) at org.apache.poi.xssf.streaming.SXSSFSheet.flushOneRow(SXSSFSheet.java:1892) at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1871) at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1882) at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:931) at com.sinosoft.application.platform.web.action.GgReportingTemplateAction.download(GgReportingTemplateAction.java:267) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sinosoft.application.common.BaseProcessAction.execute(BaseProcessAction.java:213) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:216) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:117) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.CAS_LANGUATE.doFilter(CAS_LANGUATE.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.sysframework.web.control.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.CompatibleFilter.doFilter(CompatibleFilter.java:29) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.ValidateSalt.doFilter(ValidateSalt.java:56) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:160) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.sinosoft.application.common.LoadSalt.doFilter(LoadSalt.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) 此问题已解决,导致报错的原因是sheet.trackAllColumnsForAutoSizing();poi自动设置列宽的代码,注释这行之后问题解决。
新手求助,数据结构课设的源程序,麻烦大佬们看下注释一下,搞不懂啥意思?
_#pragma once_ _#include<stdio.h>_ _#include<stdlib.h>_ _#define MAX 20_ _#define DataType char_ _ typedef struct ArcNode { int _Adjvex; //储存边所指的顶点位置 int _Weight; //储存该边的权重 int _Ee; //活动最早发生时间 int _El; //活动最晚发生时间 struct ArcNode *_NextArc; //指向下一条边的指针 }ArcNode; typedef struct VexNode { DataType _data; //顶点信息 int _InDegree; //入度 int _Flag; //拓扑排序是用来判断是否排过 int _Ve; //事件最早发生时间 int _Vl; //事件最晚发生时间 ArcNode *_FirstArc; //指向第一条依附该顶点的弧 }VexNode; typedef struct ALGraph { VexNode *_AdjList; //邻接表 int _VexNum; //结点数目 int _ArcNum; //边的数目 }ALGraph; int menu_select() { int i; do { system("cls"); printf("\t\t ╭——————————■□■□—————╮\n"); printf("\t\t│ 数 据 结 构 课 程 设 计 │\n"); printf("\t\t╰———■□■□————————————╯\n"); printf("\t\t ┌————————————————┐\n"); printf("\t\t │ 1. 用邻接表存储有向图 │\n"); printf("\t\t │ │\n"); printf("\t\t │ 2. 显 示 邻 接 表 │\n"); printf("\t\t │ │\n"); printf("\t\t │ 3. 拓 扑 排 序 │\n"); printf("\t\t │ │\n"); printf("\t\t │ 4. 逆 拓 扑 排 序 │\n"); printf("\t\t │ │\n"); printf("\t\t │ 5. 关 键 活 动 │\n"); printf("\t\t │ │\n"); printf("\t\t │ 0.退出 │\n"); printf("\t\t └————————————————┘\n"); printf("\t\t请选择(0-5):"); scanf("%d", &i); } while (i < 0 || i>5); return i; } void ClearStdin() { char ch; while ((ch = getchar()) != '\n' && ch != EOF); } int IfHaveThisVex(ALGraph* graph, DataType data) { //判断该顶点是否在_AdjList(Vex数组)中 //存在返回所在位置下标,不存在返回-1 for (int i = 0; i < graph->_VexNum; ++i) { if (graph->_AdjList[i]._data == data) { return i; } } return -1; } void CreatAdjList(ALGraph* graph) { int Weight; int FirstIndex, SecondIndex; //定义两个index存放边的两个顶点在数组中的下标 DataType FirstVex, SecondVex; //定义一个边的两个顶点值,用于接收用户输入的边的两个顶点信息 for (int i = 0; i < graph->_VexNum; ++i) { ClearStdin(); //清空输入缓冲区 //对已经malloc出来的每个顶点初始化 printf("请输入第%d个顶点的信息(例如顶点名为A,则输入A):", i + 1); scanf("%c", &(graph->_AdjList[i]._data)); graph->_AdjList[i]._Flag = 0; graph->_AdjList[i]._Ve = 0; graph->_AdjList[i]._Vl = INT_MAX; graph->_AdjList[i]._InDegree = 0; graph->_AdjList[i]._FirstArc = NULL; } system("cls"); for (int i = 0; i < graph->_ArcNum; ++i) { ClearStdin(); //清空输入缓冲区 printf("请输入有向图中第%d边的两个顶点以及权重(例:A->B权重5 则输入A B 5):", i + 1); scanf("%c %c %d", &FirstVex, &SecondVex, &Weight); FirstIndex = IfHaveThisVex(graph, FirstVex); SecondIndex = IfHaveThisVex(graph, SecondVex); if (FirstIndex == -1 || SecondIndex == -1) { i = i - 1; printf("输入顶点信息错误,请重新输入!!\n"); continue; } ArcNode * NewArc = (ArcNode*)malloc(sizeof(ArcNode)); NewArc->_Adjvex = SecondIndex; NewArc->_Weight = Weight; NewArc->_NextArc = graph->_AdjList[FirstIndex]._FirstArc; graph->_AdjList[FirstIndex]._FirstArc = NewArc; graph->_AdjList[SecondIndex]._InDegree++; } } void ALGraphInit(ALGraph* graph) { system("cls"); printf("请输入有向图顶点的个数:"); scanf("%d", &(graph->_VexNum)); printf("请输入有向图边的条数:"); scanf("%d", &(graph->_ArcNum)); graph->_AdjList = (VexNode*)malloc(sizeof(VexNode)*(graph->_VexNum)); CreatAdjList(graph); } void PrintfVexNode(VexNode *node) { ArcNode* cur = node->_FirstArc; printf("[%c]", node->_data); if (cur) { printf("-->[ %d ]", cur->_Adjvex); cur = cur->_NextArc; } while (cur) { printf("-->[ %d ]", cur->_Adjvex); cur = cur->_NextArc; } printf("-->[NULL]\n"); } void PrintfAdjList(ALGraph* graph) { system("cls"); for (int i = 0; i < graph->_VexNum; ++i) { printf("%d ", i); PrintfVexNode(&(graph->_AdjList[i])); } system("pause"); } void TopologicalSorting(ALGraph* graph,int *arr) { system("cls"); if (arr[MAX - 1] == 1) { printf("该图已经进行过拓扑排序!\n"); system("pause"); return; } int count = 0; int flag = 1; while (flag) { flag = 0; for (int i = 0; i < graph->_VexNum; ++i) { if (graph->_AdjList[i]._InDegree == 0 && graph->_AdjList[i]._Flag == 0) { flag = 1; graph->_AdjList[i]._Flag = 1; arr[count] = i; count++; ArcNode* cur = graph->_AdjList[i]._FirstArc; while (cur) { if (cur->_Weight + graph->_AdjList[i]._Ve > graph->_AdjList[cur->_Adjvex]._Ve) { graph->_AdjList[cur->_Adjvex]._Ve = cur->_Weight + graph->_AdjList[i]._Ve; } graph->_AdjList[cur->_Adjvex]._InDegree--; cur = cur->_NextArc; } break; } } } for (int i = 0; i < count; ++i) { printf("[%c][Ve: %d]\n", graph->_AdjList[arr[i]]._data, graph->_AdjList[arr[i]]._Ve); } printf("[NULL]\n"); if (count < graph->_VexNum) { printf("事件输出数量小于总数量,图中带环!!\n"); } else { arr[MAX - 1] = 1; printf("事件输出数量等于总数量,图中不带环!!\n"); } system("pause"); } void RTopologicalSorting(ALGraph* graph, int *arr) { system("cls"); if (arr[MAX - 1] == 0) { printf("请确保次图不带环并且已进行过拓扑排序后再试!\n"); system("pause"); return; } graph->_AdjList[arr[graph->_VexNum - 1]]._Vl = graph->_AdjList[arr[graph->_VexNum - 1]]._Ve; for (int i = graph->_VexNum - 2; i >= 0; --i) { ArcNode *cur = graph->_AdjList[arr[i]]._FirstArc; while (cur) { if ((graph->_AdjList[cur->_Adjvex]._Vl) - (cur->_Weight) < graph->_AdjList[arr[i]]._Vl) { graph->_AdjList[arr[i]]._Vl = (graph->_AdjList[cur->_Adjvex]._Vl) - (cur->_Weight); } cur = cur->_NextArc; } } for (int i = graph->_VexNum - 1; i >= 0; --i) { printf("[%c][Ve: %d]\n", graph->_AdjList[arr[i]]._data, graph->_AdjList[arr[i]]._Vl); } arr[MAX - 2] = 1; //printf("[NULL]"); system("pause"); } void KeyActivites(ALGraph* graph, int *arr) { system("cls"); if (arr[MAX - 2] == 0 || arr[MAX - 1] == 0) { printf("请确保该图进行过拓扑排序及逆拓扑排序后再试\n"); system("pause"); return; } for (int i = 0; i < graph->_VexNum; ++i) { ArcNode* cur = graph->_AdjList[arr[i]]._FirstArc; while (cur) { cur->_Ee = graph->_AdjList[arr[i]]._Ve; cur->_El = graph->_AdjList[cur->_Adjvex]._Vl; printf("活动[%c]-->[%c]的最早发生时间:%d 最晚发生时间:%d\n", graph->_AdjList[arr[i]]._data, graph->_AdjList[cur->_Adjvex]._data, cur->_Ee, cur->_El); cur = cur->_NextArc; } } printf("-------------------------------------------\n"); printf("关键路径如下:\n"); for (int i = 0; i < graph->_VexNum; ++i) { ArcNode* cur = graph->_AdjList[arr[i]]._FirstArc; while (cur) { //顶点的最早发生时间和最晚发生时间相等即在关键路径上 if (graph->_AdjList[arr[i]]._Ve == graph->_AdjList[arr[i]]._Vl &&graph->_AdjList[cur->_Adjvex]._Ve == graph->_AdjList[cur->_Adjvex]._Vl) { printf("活动[%c]-->[%c] 长度:%d\n", graph->_AdjList[arr[i]]._data, graph->_AdjList[cur->_Adjvex]._data, cur->_Weight); } cur = cur->_NextArc; } } system("pause"); } int main() { ALGraph G; int arr[MAX]; //存放拓扑排序顺序 arr[MAX - 1] = 0; //标志位来判断是否进行过拓扑排序 arr[MAX - 2] = 0; //标志位来判断是否进行过逆拓扑排序 while (1) { switch (menu_select()) { case 1: ALGraphInit(&G); break; case 2: PrintfAdjList(&G); break; case 3: TopologicalSorting(&G,arr); break; case 4: RTopologicalSorting(&G, arr); break; case 5: KeyActivites(&G, arr); break; case 0: printf("\t\t系统退出!!\n"); system("pause"); exit(0); } } } ``` ```
请问既然数组下标从0开始为什么会出现这样的情况呢
![图片说明](https://img-ask.csdn.net/upload/201910/24/1571909740_424808.png)![图片说明](https://img-ask.csdn.net/upload/201910/24/1571909747_816366.png) a[32]也可以有
关于二维数组的输出最大值最小值以及下标的问题
int r,c; int max_i = 0,max_j = 0,min_i=0,min_j=0; int a[r][c]; int max=0,min=0; printf("请输入二维数组行(r),列(c):\n"); scanf("%d%d",&r,&c); printf("请输入数据:"); for (int i=0; i<r; i++) { //输入数据 for (int j=0; j<c ; j++) { scanf("%d",&a[i][j]); printf("%d \t",a[i][j]); if (min>a[i][j]) { min=a[i][j]; min_i=i; min_j=j;} if (max<a[i][j]) { max=a[i][j]; max_i=i; max_j=j; } // min=a[0][0]; } } printf("最大数为:%d。下标为(%d , %d)\n",max,max_i,max_j); printf("最小数为:%d。下标为(%d , %d)\n",min,min_i,min_j); return 0; 为什么只能输出最大值和下标,不能输出最小值和下标,求大神告知
python利用字典找下标(初学者)
list1=【1,9,10,18,20】 1.找出哪两个数加起来等于10 2.无论他们在哪里,利用字典找出它们的下标 而且要兼顾复杂性
LeetCode第一题输出错误,求大神们帮忙解答
**题目描述:** 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] **我的代码(C语言)** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int *a=(int *)malloc(2*sizeof(int)); for(int i=0;i<numsSize-1;i++){ for(int j=i+1;j<numsSize;j++){ if(nums[i]+nums[j]==target){ a[0]=i; a[1]=j; return a; } } } return 0; } ``` 运行结果: ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578454149_875447.png) 不知道为什么只有右半边括号,求大神解答
dicom图像坐标转换为数组下标?
dicom文件显示的坐标为小数点后三位,这个图像是由pixel_array二维数组显示的,图像坐标和数组下标之间的关系是什么?请教各位大神。 ![图片说明](https://img-ask.csdn.net/upload/201907/28/1564247543_31163.png)
python enumerate函数问题
想问下python中,enumerate使用的问题,如下: enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中 我这边使用for循环对一个列表进行遍历,代码如下: list1=["11","33","55","dhsaj","233shuiq"] print(list(enumerate(list1))) 输出结果为: [(0, '11'), (1, '33'), (2, '55'), (3, 'dhsaj'), (4, '233shuiq')] list()实际上九十八输出结果变为列表类型,那么如果没有list() 应该输出为: (0, '11'), (1, '33'), (2, '55'), (3, 'dhsaj'), (4, '233shuiq') 但实际上执行print(enumerate(list1)),输出为: <enumerate object at 0x000002EF8AEF4948> 请问这是为什么?请知道的告诉下谢谢
awk怎么提取匹配数组元素的行
两个文件,前一个文件每行的$1为数组的下标 即a[i]=$1;i++ 读取下一个文件时,如何提取$1 ~ /a[i]/的行,匹配的时候总是匹配字符串a[i],并不是匹配a[i]的值$1怎么办
请问有大神能帮我看一下有什么细节错误吗?
大家参加了期末考试,成绩出来后老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。例如:有5名学生的成绩: zhang1,90 zhang2,91 zhang3,99 zhang4,91 zhang5,98 则排序结果应该为: zhang3,99 zhang5,98 zhang2,91 zhang4,91 zhang1,90 ![图片说明](https://img-ask.csdn.net/upload/202001/01/1577847764_977910.png) ``` #include<stdio.h> struct stu { char a[20]={'0'}; int score; } student[50]; int main() { int n; scanf("%d",&n); struct stu *ps[n],*p; for(int i=0;i<n;i++)//输入 { scanf("%s%d",&student[i].a,&student[i].score); ps[i]=&student[i]; } for(int i=0;i<n-1;i++) { int k=i;//第i次循环,指向当前最高分的指针在ps中的下标 for(int j=i;j<n;j++) if(ps[k]->score<ps[j]->score) k=j;//k永远最大 if(k!=i) { p=ps[i]; ps[i]=ps[k]; ps[k]=p; } } for(int i=0;i<n;i++) printf("%s,%d\n",ps[i]->a,ps[i]->score); return 0; } ``` ``` 十分感谢!
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问

相似问题

4
[Python]急,请问这个程序怎么运行,很简单的,怎么传argv参数
8
javascript求数组中的最大数,返回的是数组的下标,不是值,百度了一天没找到,怎么做
7
js,为什么一个对象也能用下标去访问?下有详细
5
定义一个二维数组,输入一个给定值,输出与给定值最接近的数的下标和数本身,Python
1
matlab运行时总出现带有下标的赋值维度不匹配的问题,但是数据类型也没问题啊
2
java中List操作,list下标为0的元素存入redis中,代码怎么写?
1
python利用字典找下标(初学者)
1
这个find返回的是什么类型,为什么用if (result1 != std::end(v)) 来判断有没有?不能返回具体下标吗?
3
用面向对象的思想来求解10个学生成绩中的最大值、最小值、及他们所对应的下标,求出平均分
0
js中在tx.executeSql内赋值的数组跳出函数后不能按下标查找数组,为什么?
1
python字典配合占位符出错
3
java 从数组取出指定数量的值,相加大于等于或小于等于指定的值,取出对应的组合下标,下标不能重复
4
matlab带有下标的赋值维度不匹配怎么解决啊
1
求问各位大佬怎么用python获取排序后二维列表在原列表中的下标,我的代码是这样的,但是报错了
4
初学java遇到疑惑,数组下标越界,求解答!
1
求一个int数组的元素相加为某值的所有组合,获得组合中元素的下标
2
C语法问题,二维字符串数组,无下标
1
python pop删除列表报错
0
MATLAB代码出错,请求帮助????报错带有下标的赋值维度不匹配。
1
各位大神,使用Optional 判断空时候,遇到下标越界怎么处理?