随笔-11  评论-1  文章-0  trackbacks-0
  2011年8月8日
用来修改单个文件名的基本dos指令:

ren:重命名的命令,也可以用rename;
ren file1.txt file2.txt
把file1改为file2。

用EXCEL来获取修改文件名的指令:
1. 输入 dir /b 你可以看见当前文件夹目录下面全部文件的列表。
输入 dir /b > rename.xls 将的列表输出到rename.xls电子表格。

2.使用SUBSTITUTE可以来修改文件名中指定的字符。将此公式复制到所有行中。

3.CONCATENATE("ren ",A1, " ", B1)。将此公式复制到所有行中。

4.复制得到的列,然后拷贝到rename.bat中执行,即可。

参考网址:
http://school.zzit.com.cn/OfficeSoft/Excel/20090820/211808.html
http://tech.163.com/06/0427/02/2FMB2EAA000917H3.html

涉及到指令的修改方式:
http://blog.sina.com.cn/s/blog_4661a3150100q0if.html
posted @ 2011-08-08 13:13 douhui 阅读(493) | 评论 (0)编辑 收藏
  2011年4月12日
http://www.1ting.com/ 一听音乐网

安装moonlight :  官网  http://www.go-mono.com/moonlight             下载插件

这样就可以了,只装flash容易死。

posted @ 2011-04-12 12:52 douhui 阅读(708) | 评论 (0)编辑 收藏
tar参数:

-c  创建一个压缩包(默认是tar格式)
-z  创建一个gz包
-v  显示过程
-f   设定创建的包名
-x  解压一个压缩包(默认是tar格式)
-j   创建一个bz2包

实例:

tar  -czvf  YaSuo.tar.gz  dhFiles/*   将当前目录下dhFiles文件夹中的所有文件压缩成gz包
tar  -xzvf  YaSuo.tar.gz  解压

其他的如zip等命令可参考csdn  blog:
 http://blog.csdn.net/mecho/archive/2009/07/02/4316591.aspx

posted @ 2011-04-12 09:31 douhui 阅读(3179) | 评论 (0)编辑 收藏
  2011年4月8日
sudo dpkg -i --force-architecture *.deb
posted @ 2011-04-08 16:41 douhui 阅读(4113) | 评论 (1)编辑 收藏
  2011年4月7日
换源;

ubuntu scim输入法的安装

$sudo apt-get install scim
$sudo apt-get install scim-modules-socket
$sudo apt-get install scim-modules-table
$sudo apt-get install scim-pinyin
$sudo apt-get install scim-tables-zh
$sudo apt-get install scim-input-pad

posted @ 2011-04-07 14:14 douhui 阅读(376) | 评论 (0)编辑 收藏
  2010年8月13日
时间过得真快,不知不觉已经一周没有更新随笔了。随笔慢慢地将变成随便的一笔吧,千万不要。
最近在实习,我负责的任务主要是后台数据的挖掘,用C#结合ORACLE数据库来实现。代码是现成的,我要做的就是确保得到正确的结果和稳定的运行。经过三天的读代码,写代码,终于初步完成。但由于现在还没开始利用这些数据,所以问题肯定较多,到时候就要一一解决了。
不说这个,昨天看了大整数加法,试着去北大网站上做了一个相似的题,最后终于ACCEPT。
求n个大整数相加
 1#include<stdio.h>
 2#include<string.h>
 3#define MAX_LEN 110
 4int an1[MAX_LEN][MAX_LEN+10];
 5char szLine[MAX_LEN+10];
 6
 7
 8int main()
 9{
10    int i,j,n,nLen;
11    memset(an1,0,sizeof(an1));
12    for(n=0;n<MAX_LEN;n++)
13    {
14        scanf("%s",szLine);
15        if(!strcmp(szLine,"0"))
16            break;
17        nLen=strlen(szLine);
18        j=0;
19        for(i=nLen-1;i>=0;i--)
20            an1[n][j++]=szLine[i]-'0';
21    }

22    for(i=1;i<n;i++)
23        for(j=0;j<MAX_LEN;j++)    
24        {
25            an1[0][j]+=an1[i][j];
26            if(an1[0][j]>=10)
27            {
28                an1[0][j]-=10;
29                an1[0][j+1]++;
30            }

31        }

32    bool bStartOutput=false;
33    for(i=MAX_LEN;i>=0;i--)
34    {
35        if(bStartOutput)
36            printf("%d",an1[0][i]);
37        else if(an1[0][i])
38        {
39            printf("%d",an1[0][i]);
40            bStartOutput=true;
41        }

42
43    }

44    if(!bStartOutput)
45        printf("%d",0);
46    return 0;
47}

48
这题要注意的是,首先,00这样的输入是合法的,所以判断程序结束时,不能单纯的判定第一个字符为‘0’;然后就是00+00输出0,就是结果为0时的输出。
推荐一本书,程序设计导引及在线实践,我现在正在看,也是bbs上别人推荐的,很适合acm或是想研究算法的新手。
posted @ 2010-08-13 19:44 douhui 阅读(255) | 评论 (0)编辑 收藏
  2010年8月5日
今天很忙,感觉有点力不从心。
花旗杯显得有些不太把握,总感觉在两周之内很难完成,技术难点太多。
如何实现任务的周期时执行;
如何设计页面;
关键算法又如何实现;
这些都是值得考虑的。
最近在看《C++ Primer 第四版》,看完第一章才发现以前的那点C++知识就只能证明自己知道C++的存在。
今天在自己机子上实验成功了SVN在不同局域网的使用,算是一点小成绩。
开始在交大的网站上做新手题了,昨天做的第一题,找零钱问题,结果又是在bbs上发帖,又是在网上搜资料,最后还是靠同学的代码才被accept。
不多说了,上代码,分析一下。
#include<iostream.h>

int main()
{
    
float a[8]={100,50,20,10,5,1,0.5,0.1};
    
float sum;
    
while(cin>>sum)
    {    
        
int count=0,i;
        sum
=sum+0.001;
        
for(i=0;i<8;i++)
        {
            
while(sum>=a[i])
            {
                sum
-=a[i];
                count
++;
            }
        }
        cout
<<count<<endl;
    }
    
return 0;
}
这个题用贪心算法,不难求解。我的疑惑主要有两点:
首先,我在网上搜到一种利用除法和模来计算找零张数的,结果提交上去是wrong answer ,很无语,本来我还感觉比减法要快。
然后就是浮点数比较时经常会出错,所以代码中有个+0.001的小技巧,值得借鉴。
/////////////////////////////////////////////////////
2010年8月7日
根据bbs上题目原作者的提醒,意识到上面提到的解法出现wrong answer的原因在于浮点数的计算误差。修改后代码如下:
 1 #include<iostream> 
 2 using namespace std; 
 3 
 4 int a[8]={1000,500,200,100,50,10,5,1}; 
 5 
 6 int main() 
 7 
 8 double sum; 
 9 int i,count,temp; 
10 while(cin>>sum) 
11 {    
12 sum*=10
13 temp=(int)(sum+0.1); 
14 count=0
15 for(i=0;i<8;i++
16 
17 count+=temp/a[i]; 
18 temp%=a[i]; 
19 
20 cout<<count<<endl; 
21 
22 
23 return 0
24 
第13行中double型的变量sum转为int型的temp之前,要加上0.1,这样就可以被accpet。

posted @ 2010-08-05 23:01 douhui 阅读(266) | 评论 (0)编辑 收藏
  2010年8月2日
复试没过,回来还被实习组长批了一顿,郁闷。
首先,关于复试,失败了。
关于实习,我确实不够自觉,没有和组长进行沟通,所以她对我的不满可以理解。
终于回来了,呵呵。
Nothing can stop me.
posted @ 2010-08-02 15:34 douhui 阅读(397) | 评论 (0)编辑 收藏
  2010年7月20日
唉 昨天晚上看了两部电影,日志没更新。。。
昨天还在分治与递归,偶然间发现了一个求两个数最大公约数的算法。
欧几里德:
1int GongYueShu(int m,int n)
2{
3    
4return ((n==0? m:GongYueShu(n,m%n));  
5//辗转相除,欧几里得
6}
只要一行,呵呵。
还有就是适合大数的二分法,stein算法:
 1int gcd(int a,int b)                        //对于大数,stein算法
 2
 3    if(a<b){//arrange so that a>b 
 4        int temp = a;                                                     
 5        a = b; 
 6        b=temp; 
 7    }
 
 8    if(b==0)//the base case 
 9        return a; 
10    if(a%2==0 && b%2 ==0)//a and b are even 
11        return 2*gcd(a/2,b/2); 
12    if ( a%2 == 0)// only a is even 
13        return gcd(a/2,b); 
14    if ( b%2==0 )// only b is even 
15        return gcd(a,b/2); 
16    return gcd((a+b)/2,(a-b)/2);// a and b are odd 
17}

也很巧妙,呵呵。
对了,对于昨天的三路划分快速排序,终于看懂了。

 

 1void QuickSort(int *a, int left,int right)
 2{
 3    int i,j,k,p,q;
 4    int pivot = a[right];
 5    if(right<=left)return;
 6    i=left-1;j=right;p=left-1;q=right;
 7    while(1){
 8        while(a[++i]<pivot)
 9            if(i==j)break;
10        while(pivot<a[--j])
11            if(j==left)break;
12        if(i>=j)break;
13        myswap(a,i,j);
14        if(a[i]==pivot)
15        {
16            p++;myswap(a,p,i);
17        }

18        if(a[j]==pivot)
19        {
20            q--;myswap(a,q,j);
21        }

22    }

23    if(pivot>a[right])
24    {
25        myswap(a,i,right);
26        k=right-1;
27    }

28    else k=right;
29    //j--;i++;                    //加上就出错
30    while(k>=q&&i<=right)
31    {
32
33        myswap(a,k,i);k--;i++;
34    }
                              //把左边等于pivot的元素移到中间
35    for(k=left;k<=p;k++,j--)       //把右边等于pivot的元素移到中间
36        myswap(a,k,j);
37    QuickSort(a,left,j);
38    QuickSort(a,i,right);
39}
posted @ 2010-07-20 12:57 douhui 阅读(205) | 评论 (0)编辑 收藏
  2010年7月18日
今天主要还是学习分治与递归,实现了归并排序和快速排序。
原来这两种排序方法还有可以改进的地方,比如归并排序中的merge函数,还有就是快速排序中出现有很多值相等的数组时的处理。
 1void merge(int *c ,int *d ,int left,int middle,int right)
 2{
 3    //合并c[left..middle],c[middle+1..right]到d[left..right]
 4    int i=left,j=right,k=left,t;
 5    for(t=left;t<=middle;t++)
 6    {
 7        d[t]=c[t];
 8
 9    }

10    for (t=middle+1;t<=right;t++)
11    {
12        d[right+middle+1-t]=c[t];//反向复制
13    }

14    while(k<=right)              //核心
15    {
16        if(d[i]<=d[j])
17            c[k++]=d[i++];
18        else c[k++]=d[j--];
19    }

20}

关于快速排序的优化,即三路快速排序,目前正在学习中。加油吧。
posted @ 2010-07-18 16:24 douhui 阅读(232) | 评论 (0)编辑 收藏
仅列出标题  下一页