PHP创建文件重名.重新命名文件算法(0 位领导批示)

原问题: http://bbs.blueidea.com/thread-2942989-1-1.html

随便写了一个

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
<?php
function createFile($filename, $content = '')
{
    $fp = file_put_contents($filename, $content);
}
 
// 要创建的文件名称
$filename = 'www.txt';
 
if(file_exists($filename))
{
    // 打开当前目录
   $handle = opendir('./');
    $fileinfo = pathinfo($filename);
    //print_r($fileinfo);
    $files = array();
    while (false !== ($file = readdir($handle)))
    {
        if(preg_match_all("/{$fileinfo['filename']}(\d*)\.{$fileinfo['extension']}/i", $file, $match))
        {
            $max = max($match[1]);
            if($max)
            {
                $createfile = $fileinfo['filename'] . ($max + 1) . '.' . $fileinfo['extension'];
            }
            else
            {
                $createfile = $fileinfo['filename'] . '1.' . $fileinfo['extension'];
            }
        }
    }
    createFile($createfile);
}
else
{
    createFile($filename);
}
?>

另一种思路..使用临时文件作记数器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function createFile($filename, $content = '')
{
    if(file_exists($filename . '.tmp'))
    {
        $num = (int) file_get_contents($filename . '.tmp') + 1;
        $fileinfo = pathinfo($filename);
        file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$fileinfo['extension'], $content);
        file_put_contents($filename . '.tmp', $num);
    }
    else
    {
        file_put_contents($filename, $content);
        file_put_contents($filename . '.tmp', 1);
    }
}
createFile('test.txt');
?>

代码片断(10)(4 位领导批示)

求出100-1000中的水仙花数

算法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdio.h"
 
void main()
{
    int i,a,b,c;
    for(i=100;i<1000;i++)
    {
        a = i/100;
        b = (i-100*a)/10;
        c = i-100*a-10*b;
        if(i==a*a*a+b*b*b+c*c*c) printf("%d %d %d %d \n",a,b,c,i);
    }
}

算法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdio.h"
 
void main()
{
    int i,j,k,a1,a2;
    for(i=1;i<=9;i++)
    {
        for(j=0;j<=9;j++)
        {
            for(k=0;k<=9;k++)
            {
                a1 = i*i*i+j*j*j+k*k*k;
                a2 = i*100+j*10+k;
                if(a1==a2) printf("%d\n", a2);
            }
        }
    }
}

[算法题]求数组中重复的值(2 位领导批示)

今天某人碰到的一个题目.我写了两种解法..记录一下其中一种

P.S.JS的数组初始化真的很白白..

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type="text/javascript">
var arr = new Array(1,2,3,4,5,6,7,2,3);
var tmp = new Array(0,0,0,0,0,0,0,0,0);
for(var i=0, len=arr.length; i<len; i++)
{
    var j = arr[i];
    if(tmp[j] != 0)
    {
        alert(j);
    }
    else
    {
        tmp[j] = 1;
    }
}
</script>

代码片断(9)(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
#include "stdio.h"
 
void inverse_arr(int *p)
{
    int *q,t;
    q = p+9;
    while(p<q)
    {
        t=*p;
        *p=*q;
        *q=t;
        p++;
        q--;
    }
}
 
void main()
{
    int a[10] = {2,1,5,12,56,111,67,12,56,99};
    int i;
    inverse_arr(a);
    for(i=0;i<10;i++)
    {
        printf(" %d ",a[i]);
    }
}

代码片断(3)(1 位领导批示)

起泡排序算法.从小到大排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdio.h";
void main()
{
    int i, j, tmp, arr[6] = {9,5,8,4,0,2};
    for(i=1;i<6;i++)
    {
        for(j=0;j<6-i;j++)
        {
            if(arr[j]>arr[j+1])
            {
                tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
            }
        }
    }
    for(i=0;i<6;i++) printf("%d",arr[i]);
}

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志