月度归档:2009年09月

window.open窗口名称的问题

今日在一页面中需要点击查询按钮据下拉选择弹出不同的统计结果页面。即使用如下代码:

【代码一】

1
2
3
4
<script type="text/javascript">
window.open (url, ‘newwindow’, 'height=600, width=800, top=0, left=0, toolbar=no, menubar=no, 
scrollbars=yes, resizable=yes,location=no, status=no');
</script>

当多次点击按钮触发此事件时,无法选择哪种统计方式,显示的结果总是在一个页面打开,除非关闭这个页面才会重新打开页面。不懂,于是修改其各个参数。终于在改变了newwindow后才出现所要的效果(对于每种类别在不同的窗口中显示)。
【所得】

Window.open的第二个参数是用来标记当前页面的子窗口的,可以存在多个标记为空’’的子窗口,但是对于一个不为空的标记,只能存在一个此标记的窗口。如【代码一】所示,此代码在一个页面,即使是多次触发,也只会打开一个页面,就算是其它参数不同。
【简单示例】

1
2
3
4
5
<script type="text/javascript">
   var url = "index.html";
   window.open (url, 'name', 'height=600, width=800, top=0, left=0, toolbar=no, menubar=no, 
scrollbars=yes, resizable=yes,location=no, status=no');
</script>

附 参数详解【google所得】

【参数描述】

参数名 参数说明
url 弹出窗口的文件名
name 弹出窗口的名字(不是文件名),非必须,可用空”代替
height 窗口高度
width 窗口宽度
top 窗口距离屏幕上方的象素值
left 窗口距离屏幕左侧的象素值
toolbar 是否显示工具栏,yes为显示
menubar,scrollbars 表示菜单栏和滚动栏
resizable 是否允许改变窗口大小,yes为允许
location 是否显示地址栏,yes为允许
status 是否显示状态栏内的信息(通常是文件已经打开),yes为允许

使用VLD时找不到指定的模块

今天因为想使用VLD查看一下生成的中间代码,所以需要在命令行下执行PHP,但是在CMD中输入

php -dvld.active=1 test.php

显示:

PHP Warning:  PHP Startup: Unable to load dynamic library ‘./php_curl.dll’ – 找

不到指定的模块。

 in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library ‘./php_mysql.dll’ – 找

不到指定的模块。

 in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library ‘./php_mysqli.dll’ -

找不到指定的模块。

 in Unknown on line 0

出现类似的问题应该是扩展没有找到,于是去windows目录下找到php.ini文件,发现extension_dir所指向的地址是正确的,于是我修改环境变量PATH,还是没有效果,浏览中忽然发现在php的安装目录有一个php.ini文件,可能与它有关,于是从windows下拷贝一份php.ini到安装目录,重新输入命令,一切OK!

积木城堡 

【问题描述】XC的儿子小XC最喜欢玩的游戏用积木垒漂亮的城堡。城堡是用一些立方体的积木垒成的,城堡的每一层是一块积木。小XC是一个比他爸爸XC还聪明的孩子,他发现垒城堡的时候,如果下面的积木比上面的积木大,那么城堡便不容易倒。所以他在垒城堡的时候总是遵循这样的规则。

小XC想把自己垒的城堡送给幼儿园里漂亮的女孩子们,这样可以增加他的好感度。为了公平起见,他决定把送给每个女孩子一样高的城堡,这样可以避免女孩子们为了获得更漂亮的城堡而引起争执。可是他发现自己在垒城堡的时候并没有预先考虑到这一点。所以他现在要改造城堡。由于他没有多余的积木了,他灵机一动,想出了一个巧妙的改造方案。他决定从每一个城堡中挪去一些积木,使得最终每座城堡都一样高。为了使他的城堡更雄伟,他觉得应该使最后的城堡都尽可能的高。

任务:

请你帮助小XC编一个程序,根据他垒的所有城堡的信息,决定应该移去哪些积木才能获得最佳的效果。

【输入格式 Input Format】
第一行是一个整数N(N<=100),表示一共有几座城堡。以下N行每行是一系列非负整数,用一个空格分隔,按从下往上的顺序依次给出一座城堡中所有积木的棱长。用-1结束。一座城堡中的积木不超过100块,每块积木的棱长不超过100。

【输出格式 Output Format】
一个整数,表示最后城堡的最大可能的高度。如果找不到合适的方案,则输出0。

【样例输入 Sample Input】
2
2 1 –1
3 2 1 –1

【样例输出 Sample Output】
3

【算法分析】
多次装箱

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
 
int a[101][10001], b[101];
int main()
{
       int n, i, j, k, max, min, m, flag, pp;
 
       scanf("%d", &n);
       memset(a, 0, sizeof(a));
 
       min = 100001;
       for (k = 1; k <= n; k++)
       {
              b[0] = 0;
              scanf("%d", &m);
              while (m != -1)
              {
                     b[++b[0]] = m;
                     scanf("%d", &m);
              }
 
              a[k][0] = 1;
              max = 0;
 
              for (i = 1; i <= b[0]; i++)
              {
                     for (j = max; j >= 0; j--)
                     {
                            if (a[k][j] == 1 && j + b[i] <= min)
                            {
                                   a[k][j + b[i]] = 1;
                                   if (j + b[i] > max)
                                          max = j + b[i];
                            }
                     }
              }
 
              if (max > min)
                     min = max;
 
       }
 
       flag = -1;
       for (i = min; i > 0; i--)
       {
              for (k = 1; k <= n; k++)
                     if (a[k][i] == 0)
                            break;
 
                     if (k > n)
                     {
                            flag = k;
                            max = i;
                            break;
                     }
       }
 
       if (flag == -1)
              printf("0\n");
       else
              printf("%d\n", max);
 
       return 0;
}