Category Archives: 算法&数据结构

天平比较找出轻球

用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的(条件是y个球中y-1个重量相等,其他一个轻),
使用x 次天平,最多可以从y 个小球中找出较轻的那个,求y 与x 的关系式。

其实,这是一个“三分查找问题”。

当y=3时,x=1(一次称重即可):

3个球中任选两个放到天平两端,若相等,则没称的那个是轻球。

若有一个轻,则轻的就是。

递归可以分析出来x = log3(y)。

 [......]

继续阅读

求比赛排名

n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,
存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j的队伍中更强的一支。

所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中,
比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是 4对3, 5对8。.......

胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排,
下一轮由上一轮的胜者按照顺序,再[......]

继续阅读

和谐字符串匹配

给一串很长字符串,要求找到符合要求的字符串,例如目的串:123
1******3***2 ,12*****3这些都要找出来。

这个很难概述啊,其实和某G很相似的,所以我给了个标题“和谐字符串匹配”,你懂的。

其实我把这题简化了,我们假设它和某和谐系统一样,对整个字符串只提出Pass和Reset。
#define MAX 256

int hexie(char* pat, char* str)
{
int flag[MAX];
char* ptr = st[......]

继续阅读

求从1到n中1出现的次数

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。

例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。

编程之美上的原题

基本思路1:

每次判断各位是否为1,计数。然后依次/=10即可。

时间复杂度O(N*lgN)
#include <stdio.h>

int countone(int num)
{
int cnt = 0;
while(num)
{
if(num%[......]

继续阅读

数据结构重读 – 图的定义和术语

1、在图结构中,结点关系是任意的:任意两个数据元素(结点)之间都可能有关系。

2、有向图可以表示为G={V, A},V是顶点集合,A是关系(边)的集合,也可称作VR。关系(边)用有序对<v, w>表示。图形表示是一条有向弧。v是初始点(弧尾),w是终端点(狐头)。

3、无向图一般表示为G={V, E},V还是顶点集合,E是边集合。边用无序对(v, w)表示。图形表示是一条边(无向)。

有向图G1:

V1 = {v1, v2, v3, v4}

A1 = {[......]

继续阅读