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

比如选择货物下标字典序最小的一组。例如货物的质量为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编程中怎么查找对应传来的数组下标是原二重数组的子数组的哪一个下标的序数?怎么判断下标序数是哪个控件?
react 如何遍历数组取下标为偶数的形成新的数组???
react 如何遍历数组取下标为偶数,形成新的数组啊??????? 例如:a[1,2,3,4] =>a[2,4]
字符串下标超出范围,哪里出了问题呢
``` #include <iostream> #include<cstdio> #include<string> #include <algorithm> using namespace std; void inverse1(string &a) {//用于翻转整数部分 int n =a.length(); int i=0; char b; while (a[n - 1] == '0'&&n!=1) { a.erase(n - 1, n); n--; } reverse(a.begin(), a.end()); } void inverse2(string &a) {//用于翻转小数部分 int n = a.length(); int i = 0; char b; while (a[0] == '0'&&n!=1) { a.erase(0, 1); n--; } reverse(a.begin(), a.end()); } int judge(string x,int l) {//判断是整数,小数,百分数,分数 int i=0; while (i<l) { if (x[i] == '.') return 1; else if (x[i] == '%') return 2; else if (x[i] == '/') return 3; i++; } return 4; } int main() { string x,a,b; int i = 0,j=0; getline(cin,x); int l = x.length(); switch (judge(x,l)) { case 1: while (x[i] != '.') { a[i] = x[i]; i++; }//提取整数部分 i++; while ((i+j)<l) { b[j] = x[i+j]; j++; }//提取小数部分 inverse1(a); inverse2(b); cout << a << '.' << b << endl; break; case 2: while (x[i] != '%') { a[i] = x[i]; i++; } inverse1(a); cout << a << '%' << endl; break; case 3: while (x[i] != '/') { a[i] = x[i]; i++; } i++; while ((i + j) < l) { b[j] = x[i + j]; j++; } inverse1(a); inverse1(b); cout << a << '/' << b << endl; break; case 4: inverse1(x); cout << x << endl; break; } return 0; } ``` 题目如下: 这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
leetcode奇怪的编译出错
_问题:_ **两数之和** ``` 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ``` _代码:_ **(C++)** ```cpp #include <bits/stdc++.h> using namespace std; long long x = 0; long long nums[2000000] = {0},target = 0; int main(int argc,char *argv[]) { getchar(); while (cin >> x) { nums[++nums[0]] = x; getchar(); } cin >> target; for (int i = 1;i <= nums[0] - 1;i ++) for (int j = i + 1;j <= nums[0];j ++) if (nums[i] + nums[j] == target) { cout << '[' << i << ',' << j << ']' << endl; return 0; } return 0; } ``` _错误信息:_ ``` solution.cpp: In member function __helper__ Line 29: Char 25: error: 'Solution' was not declared in this scope vector<int> ret = Solution().twoSum(param_1, param_2); return ret; ^~~~~~~~ ``` _样例输入:_ ``` [2,7,11,15] 9 ``` 求各位大神求助!!!
实现操作系统页面置换算法,调用的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)
pcl使用removeNaNFromPointCloud函数无法去除无效点?
我用removeNaNFromPointCloud函数处理点云之后,可视化窗口上的点看不见了,但输出点云的size依然和原来一样,indices里面的点和原来一样。请问这可能是什么原因?有什么办法能减少输出点云的size,真正去除无效点,而不仅是不显示? ``` //输入点云cloud,输出output for (int i = 0; i < cloud->points.size(); i++) { cloud->points[i].x = numeric_limits<float>::quiet_NaN(); cloud->points[i].y = numeric_limits<float>::quiet_NaN(); cloud->points[i].z = numeric_limits<float>::quiet_NaN(); } vector<int> indices; Cloud9::Ptr output(new Cloud9);//typedef pcl::PointXYZRGBNormal Point9; typedef pcl::PointCloud<Point9> Cloud9; pcl::removeNaNFromPointCloud(*cloud, *output, indices); cout << "there are " << output->points.size() << " points" << endl;//输出的图像看不见点了,但size不变 for (int i = 0; i < indices.size(); i++) { cout << indices[i] << endl;//输出的下标和cloud的完全一样 } ```
关于二维数组的输出最大值最小值以及下标的问题
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.无论他们在哪里,利用字典找出它们的下标 而且要兼顾复杂性
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; } ```
用语句复制数组下标,下标括号可以是一个范围而不是一个integer值么?
用语句复制数组下标,下标括号可以是一个范围而不是一个integer值么?怎么用一个intege?数组下标复制使用范围的做法是什么?
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)显示功能:以先序遍历的顺序显示建立好的哈夫曼树。显示哈夫曼编码和译码的结果。
命名的数组下标是怎么实现的,类似treenode那样的下标为什么可以用变量名?
命名的数组下标是怎么实现的,类似treenode那样的下标为什么可以用变量名?vb中的数组对应的做法是什么?
请问既然数组下标从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]也可以有
长度为10的整型数组,数组的10个数由键盘输入,输入非负整数n(n<10),将下标为n的元素从数组删除,并将其后的元素前移,输出删除一个元素后的数组内所有数据。
长度为10的整型数组,数组的10个数由键盘输入,输入非负整数n(n<10),将下标为n的元素从数组删除,并将其后的元素前移,输出删除一个元素后的数组内所有数据。
dicom图像坐标转换为数组下标?
dicom文件显示的坐标为小数点后三位,这个图像是由pixel_array二维数组显示的,图像坐标和数组下标之间的关系是什么?请教各位大神。 ![图片说明](https://img-ask.csdn.net/upload/201907/28/1564247543_31163.png)
别人写的蛇形矩阵的代码,为什么是K-1?圈起来的部分的下标的规律都是怎么找出来的?
![图片说明](https://img-ask.csdn.net/upload/201911/12/1573559667_559097.jpg)![图片说明](https://img-ask.csdn.net/upload/201911/12/1573559717_814956.png)
大一C语言,对各位大佬应该很简单
数组指针指向一行n个元素的二维数组时,当数组下标[]里面的值超过n时,是自动跳到下一行还是为空。
Dijsktra算法结果出错:terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid
结果:terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid ``` #include <iostream> #include <sstream> #include <string.h> #include <vector> #include<fstream> #define MaxInt 32767 //表示极大值,即∞ #define MVNum 100 //最大顶点数 using namespace std; typedef int ArcType; //假设边的权值类型为整型 int *D=new int[MVNum]; //用于记录最短路的长度 bool *S=new bool[MVNum](); //标记顶点是否进入S集合S={}; int *Path=new int[MVNum]; //用于记录最短路顶点的前驱 //------------图的顶点结构----------------- typedef struct{ char name[100]; char info[1000]; }VertexType; //顶点结构 //------------图的邻接矩阵----------------- typedef struct{ VertexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前点数和边数 }AMGraph; int LocateVex(AMGraph G , string vname){ //确定点v在G中的位置 for(int i = 0; i < G.vexnum; ++i) if(G.vexs[i].name== vname) return i; return -1; }//LocateVex //定义字符串分割函数 vector<string> split(const string& str, const string& delim) { vector<string> res; if("" == str) return res; //先将要切割的字符串从string类型转换为char*类型 char * strs = new char[str.length() + 1] ; //不要忘了 strcpy(strs, str.c_str()); char * d = new char[delim.length() + 1]; strcpy(d, delim.c_str()); char *p = strtok(strs, d); while(p) { string s = p; //分割得到的字符串转换为string类型 res.push_back(s); //存入结果数组 p = strtok(NULL,d); } return res; } void CreateUDN(AMGraph &G,char filename[]){ //采用邻接矩阵表示法,创建无向网G FILE *in; char *ch=new char[1000]; char* s; vector<string> res; if((in=fopen(filename,"r"))==NULL){ cout<<"无法打开graph文件!"<<endl; exit(0); } //读取总顶点数,总边数 fgets(s,1000,in); res=split(s, " "); stringstream ss,kk; ss<<res[0]; ss>>G.vexnum; cout<<G.vexnum<<endl; kk<<res[1]; kk>>G.arcnum; cout<<G.arcnum<<endl; //读取顶点信息 for(int i=0;i<G.vexnum;i++){ fgets(s,1000,in); res=split(s, " "); strcpy(G.vexs[i].name, res[0].c_str()); strcpy(G.vexs[i].info, res[1].c_str()); } //读取边的信息 int m,n; for(int i=0;i<G.arcnum;i++){ stringstream zz; fgets(s,1000,in); res=split(s, " "); m = LocateVex(G, res[0]); n = LocateVex(G, res[1]); //确定两个顶点在G中的位置,即顶点数组的下标 zz<<res[2]; zz>>G.arcs[m][n]; //设置边的权重 G.arcs[n][m] = G.arcs[m][n]; zz.str(""); } fclose(in); }//CreateUDN void ShortestPath_DIJ(AMGraph G, int v0){ //用Dijkstra算法求有向网G的v0顶点到其余顶点的最短路径 int v , i , w , min; int n = G.vexnum; //n为G中顶点的个数 for(v = 0; v < n; ++v){ //n个顶点依次初始化 S[v] = false; //S初始为空集 D[v] = G.arcs[v0][v]; //将v0到各个终点的最短路径长度初始化为弧上的权值 if(D[v] < MaxInt) Path [v] = v0; //如果v0和v之间有弧,则将v的前驱置为v0 else Path [v] = -1; //如果v0和v之间无弧,则将v的前驱置为-1 }//for S[v0]=true; //将v0加入S D[v0]=0; //源点到源点的距离为0 /*―初始化结束,开始主循环,每次求得v0到某个顶点v的最短路径,将v加到S集―*/ for(i = 1;i < n; ++i){ //对其余n-1个顶点,依次进行计算 min= MaxInt; for(w = 0; w < n; ++w) if(!S[w] && D[w] < min){ //选择一条当前的最短路径,终点为v v = w; min = D[w]; }//if S[v]=true; //将v加入S for(w = 0;w < n; ++w) //更新从v0出发到集合V?S上所有顶点的最短路径长度 if(!S[w] && (D[v] + G.arcs[v][w] < D[w])){ D[w] = D[v] + G.arcs[v][w]; //更新D[w] Path [w] = v; //更改w的前驱为v }//if }//for }//ShortestPath_DIJ void DisplayPath(AMGraph G, int begin,int temp ){ //显示最短路 //cout<<Path[temp]<<endl; if(Path[temp] != -1){ DisplayPath(G, begin,Path[temp]); cout<<G.vexs[Path[temp]].name<<"-->"; } }//DisplayPath int main() { //cout << "************算法6.10 迪杰斯特拉算法**************" << endl << endl; AMGraph G; int i , j ,fuwu,jd,start, destination; char f1[]={"graph.txt"}; CreateUDN(G,f1); cout <<endl; cout << "*****无向网G创建完成!*****" << endl; for(i = 0 ; i < G.vexnum ; ++i){ for(j = 0; j < G.vexnum; ++j){ if(j != G.vexnum - 1){ if(G.arcs[i][j] != MaxInt) cout << G.arcs[i][j] << "\t"; else cout << "∞" << "\t"; } else{ if(G.arcs[i][j] != MaxInt) cout << G.arcs[i][j] <<endl; else cout << "∞" <<endl; } } }//for cout << "************欢迎来到**************" << endl << endl; cout << " 1.查询景点信息 "<<endl; cout << " 2.问路查询 "<<endl; cout << " 3.退出 "<<endl; cout<<"*****************请选择需要的服务(1-3)****************"<<endl; cin>>fuwu; switch(fuwu){ case 1:cout<<"本校景点有:"<<endl; for(i=0;i<G.vexnum;i++){ cout<<i<<":"<<G.vexs[i].name<<endl; } cout<<"请选择需要查询的景点"<<endl; cin>>jd; cout<<G.vexs[jd].info<<endl; case 2:cout<<"本校景点有:"<<endl; for(i=0;i<G.vexnum;i++){ cout<<i<<":"<<G.vexs[i].name<<endl; } cout<<"请输入您的所在地"<<endl; cin>>start; cout<<"请输入您的目的地"<<endl; cin>>destination; ShortestPath_DIJ(G,start); cout<<"路径是:"; DisplayPath(G,start,destination); cout<<G.vexs[destination].name<<endl<<"最短距离是:"<<endl; cout<<D[destination]<<endl; case 3: exit(0); } return 0; }//main ```
下标索引必须为正整数类型或逻辑类型。 出错 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
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问

相似问题

4
[Python]急,请问这个程序怎么运行,很简单的,怎么传argv参数
8
javascript求数组中的最大数,返回的是数组的下标,不是值,百度了一天没找到,怎么做
7
js,为什么一个对象也能用下标去访问?下有详细
5
定义一个二维数组,输入一个给定值,输出与给定值最接近的数的下标和数本身,Python
1
js,如何在一条线里面插入一个点(如何在不知道左右下标的情况下在一个数组里面插入一个点),下有详细
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语法问题,二维字符串数组,无下标
0
MATLAB代码出错,请求帮助????报错带有下标的赋值维度不匹配。
1
各位大神,使用Optional 判断空时候,遇到下标越界怎么处理?