星海's Blog

老头初学编程
子序列问题
单链表,双向链表,栈ADT

一些小题

星海 posted @ 2011年11月16日 21:20 in 数据结构与算法分析 , 1279 阅读
#include <stdio.h>

int majority(int [], int, int);                 /* 确认候选值是不是主要元素 */
int primarykey(int arr[], int n)                /* 找出候选值 */
{
    int gal = 1;
    int key = arr[0];
    int i;
    for (i = 1; i < n; i++) {
        if (key == arr[i]) {
            gal++;
        }
        else
            gal--;
        if (gal == 0) {
            gal = 1;
            key = arr[i];
        }
    }
    return majority(arr, n, key);
}

int majority(int a[], int n, int key)
{
    int i;
    int sumkey = 0;
    for (i = 0; i < n; i++)
        if (a[i] == key)
            sumkey++;
    if (sumkey > n / 2)
        return key;
    else
        return 0;
}
int main(void)
{
    int a[] = {3, 3, 4, 3, 3, 4, 2, 4, 3};
    printf("%d\n", primarykey(a, 8));
    printf("%d\n", primarykey(a, 9));
    return 0;
}

 

啊啊

Avatar_small
λ 说:
2011年11月16日 23:14

- - 啥是主要元素……

Avatar_small
星海 说:
2011年11月16日 23:17

就是数组中某元素的数目大于 数组大小一倍的数。。。。

Avatar_small
λ 说:
2011年11月16日 23:27

- - 一半,先睡觉,累

Avatar_small
星海 说:
2011年11月16日 23:32

从没有过MM给你暖被窝的撸SIR啊。。。睡吧。。。。。。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter