arr

L1-027 出租

百般思念 提交于 2020-01-25 08:03:31
下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单, index 数组就是 arr 数组的下标, index[0]=2 对应 arr[2]=1 , index[1]=0 对应 arr[0]=8 , index[2]=3 对应 arr[3]=0 ,以此类推…… 很容易得到电话号码是 18013820100 。 本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。 输入格式: 输入在一行中给出一个由11位数字组成的手机号码。 输出格式: 为输入的号码生成代码的前两行,其中 arr 中的数字必须按递减顺序给出。 输入样例: 18013820100 输出样例: int[] arr = new int[]{8,3,2,1,0}; int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4}; 因为要排序,所以并没有采用set,而是选择对数组去重 #include<bits/stdc++.h> #define INF 0x3f3f3f3f typedef long long ll; using namespace std; //const int maxn = 100 + 10; string s; int a[110]; int ind[110]; int

js数组和函数应用

拟墨画扇 提交于 2020-01-25 01:56:35
JS数组: 定义并赋值 函数:var arr={值1,值2,值3}; 也可以先定义后赋值 var arr={}; arr{0}=1; arr{1}=2; 数组的长度(元素的个数) 代码:数组。length 数组的组成: 1元素 2下标(索引) 3数组长度 数组的遍历 var arr={1,2,3,4,5,}; for(var num in arr){ console.log(arr.length) } 方法函数: 特性:预加载功能在运行网页的时候已经加载到内存 代码 function hello(){ console.log("hello") } hello(); 另一种代码方式 var getName = function(){ console.log(“tom”) } getName(); 函数的参数不是严格对应的 function f1(name,age,addr='beijing'){ console.log('个人信息:'+"名字:"+name+";年龄:"+age+";地址:"+addr); } f1("张三","12","中国"); 输出:个人信息:名字:张三;年龄:12;地址:中国 f1("张三","12"); 输出:个人信息:名字:张三;年龄:12;地址:beijing 注:在有默认值的情况下输出默认值 阶乘: function jiecheng(n){ if(n

JavaScript之数组对象

冷暖自知 提交于 2020-01-25 01:52:12
Array类型是ECMAScript中最常用的类型了。 一、 声明方式 1.使用Array构造函数 var arr1 = new Array(); 如果预先知道要保存数组的数量, 也可以给构造函数传递该数量,该数量会自动变成length属性值。 var str = new Array(10); console.log(str.length) // 10 也可以向数组中传递包含的值。 var arr = new Array('hello', 'world', 'js'); console.log(arr); // ['hello', 'world', 'js'] 在使用Array的时候也可以省略new操作符。 var str = Array(3); console.log(str.length); // 3 2. 数组字面量表示法 var name = ['mike', 'john', 'kaer']; 注释:不要想这样声明数组, var arr = [1, 2, ]; , 在IE8及之前的版本中, arr会成为一个包含3个项且每项值为1,2,undefined的数组。而在其他浏览器中会包含项目值分别为1,2的数组。 设置和获取数组的值都可以通过索引的方式。 二、length属性 数组的length属性不只是只读的,可以通过设置这个属性,从末尾移除或向数组中添加新项。 var

数组常用的几种方法

故事扮演 提交于 2020-01-25 01:50:03
JavaScript数组创建有两种方式,第一种使用Array构造函数: var arr1=new Array();//创建一个空数组 var arr2=new Array(20);//创建一个包含20项的数组 var arr3=new Array("LiWen","liuXi","XiaoXu");//创建一个包含三个字符的数组 第二种方式使用数组字面量表示法:     var arr4 = []; //创建一个空数组      var arr5 = [20]; // 创建一个包含1项的数组      var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组 在读取和设置数组的值时,要使用方括号并提供相应值的基于 0 的数字索引: var arr6 = ["LiWen","liuXi","XiaoXu"]; // 创建一个包含3个字符串的数组 alert(arr6[0]); //LiWen arr6[1] = "mary"; //修改第二项为liuXi arr6[3] = "sean"; //增加第四项为XiaoXu 1.join() join(separator): 将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。 var arr=[1,2,3];

数据结构与算法——暴力递归

偶尔善良 提交于 2020-01-25 00:41:15
暴力递归就是尝试 1, 把问题转化为规模缩小了的同类问题的子问题 2, 有明确的不需要继续进行递归的条件(base case) 3, 有当得到了子问题的结果之后的决策过程 4, 不记录每一个子问题的解 一定要学会怎么去尝试,因为这是动态规划的基础,这一内容我们将在提升班讲述 汉诺塔问题 打印n层汉诺塔从最左边移动到最右边的全部过程 public static void hanoi(int n) { if (n > 0) { func(n, "左", "右", "中"); } } // 1~i 圆盘 目标是from -> to, other是另外一个 public static void func(int N, String from, String to, String other) { if (N == 1) { // base System.out.println("Move 1 from " + from + " to " + to); } else { func(N - 1, from, other, to); System.out.println("Move " + N + " from " + from + " to " + to); func(N - 1, other, to, from); } } 打印一个字符串的全部子序列,包括空字符串 public static

L1-027 出租 (20分)

 ̄綄美尐妖づ 提交于 2020-01-24 15:41:36
题目来源:PTA 团体程序设计天梯赛-练习集 L1-027 出租 (20分) 题目如下: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。 本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。 输入格式: 输入在一行中给出一个由11位数字组成的手机号码。 输出格式: 为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。 输入样例: 18013820100 输出样例: int[] arr = new int[]{8,3,2,1,0}; int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4}; # include <stdio.h> # include <string.h> # include <ctype.h> int main ( ) { char s [ 15 ] ; int i , a [ 11 ] , b [ 11 ] , j = 0 , cnt = 0 , k ; scanf ( "%s" , s ) ; memset

排序算法-插入排序

巧了我就是萌 提交于 2020-01-24 12:46:49
一、插入排序(InsertSort) 插入排序从第二个数开始,拿出第二个数进行向前插入排序,一直到最后一个数向前做插入排序。算法稳定。 插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。最好的时间复杂度是O(n),最坏也就是平均是O(n^2) 二、图解 对于一串数字(3,5,2,1,4,10)进行插入从小到大排序,如下图演示 三、算法分析 /** * 插入排序 * 1、确定插入排序的数,从第二个开始选择 * 2、选择插入排序的数,保存为num * 3、计算num前一个数的索引 * 4、进行检查,如果num小于前面的数,则将前一个数往后移,若比前一个数大,则结束此次循环 * 5、结束时的位置保存num * @param arr */ public static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { //选择插入排序的数,保存为num int num = arr[i]; //计算num前一个数的索引 int preIndex = i - 1; for (; preIndex >= 0; preIndex--) { //进行检查,如果num小于前面的数,则将前一个数往后移,若比前一个数大,则结束此次循环 if (num < arr[preIndex]) arr[preIndex +

软件工程第三次作业

牧云@^-^@ 提交于 2020-01-24 10:37:34
1. 题目要求 题目(1):最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。 -- 引用自《 百度百科 》 2. 具体要求 (1) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub或者Coding.net系统中,并将代码地址附到博客内 (2) 请从 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖 五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例 (3) 请利用自动测试工具对程序进行测试 (4) 请将程序运行结果和自动测试分析结果截图附到博客中 3.代码实现 package zuoye3; public class zuoye3 { public static void main(String[] args) { // TODO Auto-generated method stub int[]

第六周编程总结

醉酒当歌 提交于 2020-01-24 09:56:45
函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: include<stdio.h> include <math.h> double fun (double a, double b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 1.实验代码 double fun(double a,double b) { double c,d,result; c=sqrt( a); d=sqrt( b); result=c+d; return result; } 2.设计思路 3.运行结果 读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。 输入格式: 输入有两行: 第一行是n值; 第二行是n个数。 输出格式: 输出最大值和最小值。 输入样例: 在这里给出一组输入。例如:

java算法-二分查找算法

时光怂恿深爱的人放手 提交于 2020-01-24 04:22:33
一、二分查找算法思想 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 二、图示说明 三、二分查找优缺点 优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为有序表,且插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 使用条件:查找序列是顺序结构,有序。 四、代码实现 1.非递归方法 private static int binarySearch(int[] arr, int key) { int left = 0; int right = arr.length-1; int mid ; if (key < arr[left] || key > arr[right] || left > right){ return -1; } while(left < right){ mid = (left + right)/2; if (arr[mid] < key){ left = mid +1; }else if(arr[mid] > key){ right = mid - 1; }else { return mid ; } } return -1; } 2