1.以下嵌套循环是 hardcode,怎么样实现,输入一个数 length,就会让循环嵌套多少层,灵活处 . ,怎么样实现, ,就会让循环嵌套多少层, ,例如: 理不是 hardcode,例如: 次放, 次放, 输入 2 就是从 0-2,嵌套三层,每个循环都是从 0-2,不能直接用 2 的 2 次放,3 的 3 次放,4 的 4 ,嵌套三层, , 次放这样计算运算次数。 次放这样计算运算次数。
int length=100; for (int i = 0; i
{ method1(); } ..... } } }
答案:
例如:method(100,100);//这是调用下面的递归方法,level 是层数 void method(intlength,int level) { if(level<0) return; for (int i = 0; i < length; i++) { method(length,level-1) }
}
2.两个数相加除了用加法之外,在程序中是否还有其它实现方法,若有请说明具体算法?
3.有一个整型数组,里面可能存在相同的元素,请写一个算法,判断里面相同的元素是否超过一半,不要 求找出元素的值,和相同的个数,只要求返回 true or false,例如: {1,2,3,1,5,1,8,9,1,5,1,1,1}=true {3,2,1,6,7,9,7,6,1,3}=false 要求时间复杂度是 O(n) 注意时间复杂度,超过 都是无效的答案. 注意时间复杂度 超过 O(n),都是无效的答案 都是无效的答案
function check() { varmyarray = new Array(); for(var i =0 ;i<100;i++) myarray[i] = 0; var text = $('#Text2').val(); varintarray = text.split(","); $(intarray).each(function(){ myarray[this] += 1; // ; }); var count = 0;
for(var i =0;i<100;i++){ if(myarray[i]>1){ count += myarray[i] -1; } } + '\n'+'结果:'+ (count*2 >= intarray.length).toString());
}
public class CalNum { public int[] a; public int[] arr1 = new int[] { 1, 2, 3, 1, 5, 1, 8, 9, 1, 5, 1, 1, 1 }; public int[] arr2 = new int[] { 3, 2, 1, 6, 7, 9, 7, 6, 1, 3 }; public bool Test(int [] arr1) { a = new int[100]; for (int i = 0; i < 100; i++) a[i] = 0; foreach (int v in arr1) a[v] += 1; int count = 0; for (int i = 0; i < 100; i++) if (a[i] > 1) count += a[i] - 1; return count > arr1.Length; } public void fun() { Console.WriteLine(Test(arr1)); Console.WriteLine(Test(arr2)); } } 时间复杂度是 O(n)
4.用编程语言实现以下各题, 1,求自然数 10000 以内所有 11 的倍数的和? 2,1+2+4+8+.......+2^100 = ? 3,有若干只鸡和兔,共 30 个头,100 条腿,求有几只鸡几只兔?
1. 10000 / 11 = 909 这个问题转化为 11 + 11*2 + 11*3 ... + 11*909 采用等差数列求和
S = (11 + 11 * 909) * 909 / 2 = 11 * 910 /2 = 5005 编程的思路和这个数学解法类似。这题实际上是考等差数列求和 2. 等比数列求和答案为 2^101 - 1 编程时转成求 2 的 101 次方键 1 就可以了。这题主要考等比数列求和以及大数如何表示。 3. 设鸡为 x 兔为 y x * 1 + y * 1 = 30 x * 2 + y * 4 = 100 得 y = 20 , x = 10 编程时求解这个
公式就可以了,很简单。