长度

zzulioj 1139: 输出最短字符串

强颜欢笑 提交于 2020-01-31 11:54:14
1139: 输出最短字符串 题目描述 输入n和n个字符串,输出其中最短的字符串。若长度相同则输出出现较早的那一个。 输入 第一行是一个整数n,后面跟着n行,每行包括一个由字母和数字和空格组成的字符串,长度不超过1000。 输出 长度最短的字符串,若长度相同则输出出现较早的那一个。 样例输入 Copy 5 How are you! Happy Good! Hello world! Thinks 样例输出 Copy Happy C # include <stdio.h> # include <string.h> int main ( ) { char a [ 1000 ] , m [ 1000 ] ; int n , i ; scanf ( "%d" , & n ) ; getchar ( ) ; gets ( m ) ; for ( i = 1 ; i < n ; i ++ ) { gets ( a ) ; if ( strlen ( m ) > strlen ( a ) ) strcpy ( m , a ) ; } puts ( m ) ; return 0 ; } 来源: CSDN 作者: 曹氏阿七 链接: https://blog.csdn.net/qq_45845830/article/details/104114283

oj --哈夫曼树-求带权路径长度

我是研究僧i 提交于 2020-01-31 07:04:45
题目所描述的有点问题,其实是叶节点的路径与权值乘积之和,即带权路径长度! 用到了c++中小顶堆的创建方法,优先队列。 定义:priority_queue<Type, Container, Functional> Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆 还利用到: 若定义每个结点都有值,为其子女的值之和,那么除了根结点外所有结点之和恰好等于带权路径长度 ,按层级累加的规律不难理解叶子节点的值也是“乘了好多倍” # include <iostream> # include <stdio.h> # include <queue> using namespace std ; priority_queue < int , vector < int > , greater < int > > Q ; int main ( ) { int N ; while ( scanf ( "%d" , & N ) != EOF ) { while ( ! Q . empty ( ) ) Q . pop ( ) ; for

C++ STL vector 不想初始化长度怎么办

…衆ロ難τιáo~ 提交于 2020-01-27 20:20:39
vector方便的地方就在于不用在意长度的限制,但是如果一开始为vector读取输入的时候,我们没有初始化vector大小的话,很容易出现下标越界的情况,然后程序不跑了。。。 有时候未知输入的长度时,vector开小了怕越界,开大了怕浪费 解决方法 使用 vector 的 insert 方法,这样一来vector会自动地增加自己的长度了,防止越界 // 在尾部直接插入元素 x v . insert ( v . end ( ) , x ) ; # include <iostream> # include <vector> using namespace std ; int main ( ) { vector < int > v ; int x ; for ( int i = 0 ; i < 4 ; i ++ ) { cin >> x ; v . insert ( v . end ( ) , x ) ; } for ( int i = 0 ; i < 4 ; i ++ ) { cout << v [ i ] << endl ; } return 0 ; } 运行结果: 来源: CSDN 作者: AkagiSenpai 链接: https://blog.csdn.net/weixin_44176696/article/details/104094252

js array push()方法

非 Y 不嫁゛ 提交于 2020-01-27 14:21:40
JavaScript push() 方法 JavaScript Array 对象参考手册 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 语法 arrayObject.push(newelement1,newelement2,....,newelementX) 参数 描述 newelement1 必需。要添加到数组的第一个元素。 newelement2 可选。要添加到数组的第二个元素。 newelementX 可选。可添加多个元素。 返回值 把指定的值添加到数组后的新长度。 说明 push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。 提示和注释 注释: 该方法会改变数组的长度。 提示: 要想数组的开头添加一个或多个元素,请使用 unshift() 方法。 实例 在本例中,我们将创建一个数组,并通过添加一个元素来改变其长度: <script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />")

不指定数列长度,从文件中读入数列和从键盘输入数列

喜你入骨 提交于 2020-01-27 04:53:39
从文件中读入数列: # include <stdio.h> # define maxn 100; //开一个大数组 int main ( ) { int test [ maxn ] ; int n = 0 ; //n为数组长度 freopen ( "input.txt" , "r" , stdin ) ; while ( scanf ( "%d" , test + n ) != EOF ) n ++ ; } 从键盘中读入数据: # include <stdio.h> # define maxn 100; //开一个大数组 int main ( ) { int test [ maxn ] ; int n = 0 ; //n为数组长度 do { scanf ( "%d" , test + n ) ; n ++ ; } while ( getchar ( ) != '\n' ) ; //以换行符作为输入的结束 } 二者比较: 从文件读入的代码中,可以为空文件; 从键盘你输入的代码中,至少要输入一个数字。 来源: CSDN 作者: 查立军 链接: https://blog.csdn.net/weixin_43370733/article/details/104009172

C实现删除指定长度的字符

久未见 提交于 2020-01-26 23:50:17
char * deleteChars ( char * str , int pos , int len ) { char * p = str + pos - 1 ; //指向pos位置字符 int tt = strlen ( str ) ; //计算字符长度 if ( ( pos < 1 ) || ( p - str ) > tt ) //检查pos是否大于1 检查pos超出字符串长度 { return str ; } if ( ( p + len - str ) > tt ) //len大于pos后剩余的字符个数 { //只需对pos位置赋值 '\0' * p = '\0' ; return str ; } //删除len个字符 while ( * p && * ( p + len ) ) { * p = * ( p + len ) ; p ++ ; } * p = '\0' ; return str ; } int main ( ) { char str [ ] = "abcdefgbc" ; deleteChars ( str , 4 , 3 ) ; cout << str << endl ; system ( "pause" ) ; return 0 ; } 来源: CSDN 作者: lpl312905509 链接: https://blog.csdn.net

PAT--动态规划

女生的网名这么多〃 提交于 2020-01-26 02:45:48
1007 、/* 1.数组开到刚刚好, 输入 2.可能的结果,结果,可能的开始, 开始, 结束 3.可能的结果小于零:从0开始,记录可能的开始 4.可能的结果大于结果:更新结果, 记录开始和结束 5.如果结果小于零 6.打印输出 */ #include <bits/stdc++.h> using namespace std; int a[10001]; int main(){ int n,i; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",&a[i]); int tmp=0,res=-1,start=0,end=n-1,p=0; //res=-1不能为0 for(int i=0;i<n;i++){ tmp+=a[i]; if(tmp<0){ tmp=0; p=i+1; //p只是出现结果的可能性, 所以不能省略这步 } else if(tmp>res){ //不能等于, 后面的样例会冲掉 res=tmp; start=p; end=i; } } if(res<0)res=0; //不能去掉, 若结果是res初始化的值就出 问题了 printf("%d %d %d",res,a[start],a[end]); return 0; } 1040 /* 1.得到输入 2.初始化长度 3.以每个字符为中心遍历 4.奇数最长长度,更新 5.偶数最长长度

java 循环节长度

夙愿已清 提交于 2020-01-25 08:26:36
循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。 下面的方法,可以求出循环节的长度。 请仔细阅读代码,并填写划线部分缺少的代码。 public static int f(int n, int m) { n = n % m; Vector v = new Vector(); for(;;) { v.add(n); n *= 10; n = n % m; if(n==0) return 0; if(v.indexOf(n)>=0) _________________________________ ; //填空 } } 答案是: return v.size(); 代码中,填空那一行,当有一个被除数(即上一次取余之后的数),跟一开始计算有重复(即想等),就判断出来了,此时v放的就是每次的被除数,长度也就是循环节的长度。 来源: CSDN 作者: 哦豁!!! 链接: https://blog.csdn.net/weixin_42389265/article/details/103939081

AcWing 1014 登山

爱⌒轻易说出口 提交于 2020-01-20 12:31:58
题目描述: 五一到了,ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。 同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。 队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么? 输入格式 第一行包含整数N,表示景点数量。 第二行包含N个整数,表示每个景点的海拔。 输出格式 输出一个整数,表示最多能浏览的景点数。 数据范围 2≤N≤1000 输入样例: 8 186 186 150 200 160 130 197 220 输出样例: 4 分析: 本题题意是按顺序浏览景点,不连续浏览两个海拔相同的景点。且一旦下山就不再上山了,这意味着访问景点的顺序是个单峰序列,即先向高处景点行走,之后再向低处景点行走。问题的关键在于这个峰值是哪点,设dp[i]表示以i点为峰值的单峰子序列的最大值,即dp[i]等于以i为末尾的最长上升子序列的长度加上以i为开头的最长下降子序列的长度。如果用一重循环取枚举峰值点i,然后再用两层循环取求以i点为分界线的最长上升子序列长度和最长下降子序列长度,时间复杂度将是立方级别的。不妨预处理下以h[i]为末尾的LIS长度以及以h[i]为开头的最长下降子序列的长度。如果我们g[i]表示以h[i