亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
樓主: forrestgang
打印 上一主題 下一主題

華為面試題(8分鐘寫(xiě)出代碼) [復(fù)制鏈接]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
151 [報(bào)告]
發(fā)表于 2007-01-13 13:51 |只看該作者

回復(fù) 1樓 forrestgang 的帖子

/*
解法假設(shè):

1、假設(shè)存在數(shù)組a[n],b[n],且Sum(a[n]) < Sum(b[n]);

2、假設(shè)在數(shù)組a[n]與b[n]中,不存在元素a[i],使Sum(a[n]) < Sum(b[n]),且Sum(a[n])的值比上次求和的值大,則數(shù)組Sum(a[n])與數(shù)組Sum(b[n])
的差值最小。



*/


算法:

Sum(數(shù)據(jù)類(lèi)型 *p, int n)//數(shù)組n的求和函數(shù);
Swap(數(shù)據(jù)類(lèi)型 *a, int i, 數(shù)據(jù)類(lèi)型 *b, int j)//a[i]與b[j]交換的函數(shù)

int intSumA = 0;
int intSumB = 0;

if ( Sum(a[n]) < Sum(b[n] ) //初始比價(jià)兩個(gè)數(shù)組的和的大小
{

        
    for(i = 0; i < n; i++)
    {
              intSumA = Sum(a[n]);
        intSumB = Sum(b[n]);
           
        for (j = 0; j < n; j++)
        {
            if ( (intSumA - a[i] + b[j] < intSumB + a[i] - b[j] )
                       && ( a[i] < b[j])
                     )
            {
                Swap(a, i, b, j);
                i = 0;
                break;

            }
            
        }
    }
}
else
{
    //與條件為真時(shí)類(lèi)似處理;
}



pring a[n], b[n];

論壇徽章:
0
152 [報(bào)告]
發(fā)表于 2007-01-16 13:34 |只看該作者
原帖由 ccjjhua 于 2006-11-13 11:42 發(fā)表
把a(bǔ),b 2數(shù)組的元素放到數(shù)組3(2n大。 中進(jìn)行排序,
a 先取最小的,b先取次小的,
然后根據(jù)a,b已取元素和的大小來(lái)決定誰(shuí)來(lái)取剩下元素中最小的。策略是,已取得的所有元素之和大的來(lái)取C中剩下元素中的最小者。如 ...


這個(gè)好像行得通。。。

論壇徽章:
0
153 [報(bào)告]
發(fā)表于 2007-01-16 14:58 |只看該作者
把兩個(gè)數(shù)據(jù)放在一起
然后使用 組合 C(n, 2 * n);
把每一個(gè)組合得到的值 和   sum / 2 進(jìn)行相減
數(shù)值最小的 組合 當(dāng)作一個(gè)數(shù)組, 剩下的當(dāng)作另一個(gè)數(shù)組

組合C的 編寫(xiě),找現(xiàn)成的排列組合算法,STL里面有一個(gè)next_permutation組合算法

論壇徽章:
0
154 [報(bào)告]
發(fā)表于 2007-03-06 17:05 |只看該作者
原帖由 mynets 于 2006-11-30 10:40 發(fā)表
If performance is not a key factor, this program's result is very precise. And you can use it to evaluate other algorithms.

[code]
#include <sys/types.h>
#include <unistd.h>
#incl ...

同意這個(gè)算法,
貼子是否該有個(gè)結(jié)論了。
其實(shí)想有個(gè)最好的結(jié)果!

論壇徽章:
0
155 [報(bào)告]
發(fā)表于 2007-03-07 11:18 |只看該作者
先把兩個(gè)數(shù)組歸并成一個(gè)數(shù)組,再排序,完成后再分割,數(shù)組下標(biāo)為單的為一個(gè)數(shù)組,為雙的為另一個(gè)數(shù)組,就OK了

論壇徽章:
0
156 [報(bào)告]
發(fā)表于 2007-03-07 13:17 |只看該作者
#include <stdio.h>
int c[20];

int mcam(int *a,int *b)
{
        if( *a > *b)
                return 1;
        else if( *a == *b)
                return 0;
        else
                return -1;
}
int printarr(int *a,int size)
{
        int i ;
        for(i = 0;i < size;i++){
                printf("%d,",*a);
                a++;
        }
        printf("\n");
}
int a[] = {10,34,230,400,321,4233,2000,50,320,333};
int b[] = {23,7000,200,634,987,230,640,46,135,257};

int main(int argc,char **argv)
{
        qsort(a,10,sizeof(int),mcam);
        qsort(b,10,sizeof(int),mcam);
        printarr(a,10);
        printarr(b,10);
        int loop = 1;
        int suma,sumb;
        int gap;
        int max,temp;
        int i,j;
        int sub;
        while(loop){
                int chgi=-1,chgj=-1;
                max = 0;
                suma=sum(a,10);
                sumb=sum(b,10);
                gap = (suma-sumb)/2;
                for(i=9;i>=0;i--){
                        for(j=0;j<10;j++){
                                sub = a[i] - b[j];
                                if(gap > 0){
                                        if(max <sub && sub <gap){
                                                max = sub;
                                                chgi = i;
                                                chgj = j;
                                        }
                                }else if(gap < 0){
                                        if( max >sub && sub >gap){
                                                max = sub;
                                                chgi = i;
                                                chgj = j;

                                        }
                                }else{
                                        printf("loop = 0\n");
                                        loop =0;
                                        break;
                                }
                        }
                }
                printf("gap=%d i=%d,j=%d\tmax=%d\n",gap,chgi,chgj,max);

                if(chgi == -1){
                        printf("none change\n");
                        break;
                }
                temp = a[chgi];
                a[chgi] = b[chgj];
                b[chgj]=temp;
                qsort(a,10,sizeof(int),mcam);
                qsort(b,10,sizeof(int),mcam);
                printf("suma=%d,sumb=%d\n",sum(a,10),sum(b,10));
        }
        printf("suma=%d,sumb=%d\n",sum(a,10),sum(b,10));
        printarr(a,10);
        printarr(b,10);
        return 0;
}

int sum(int *a,int size)
{
        int i;
        int sum=0;
        for(i=0;i<size;i++){
                sum+=*a;
                a++;
        }
        return sum;
}

論壇徽章:
0
157 [報(bào)告]
發(fā)表于 2007-03-13 15:45 |只看該作者
先把兩個(gè)數(shù)組按值排序,再把值順次賦給數(shù)組,就可以滿足題目了

論壇徽章:
0
158 [報(bào)告]
發(fā)表于 2007-03-13 17:34 |只看該作者
我是一只菜鳥(niǎo),說(shuō)錯(cuò)了不要拍俺~~~~~~~~~~多謝。還請(qǐng)各位大俠多支點(diǎn)我錯(cuò)在了那里!謝謝。

我覺(jué)得程序需要有普適性,相信各位高手對(duì)這個(gè)概念早就熟悉的不能再熟悉了。所以我認(rèn)為求出相對(duì)小值也許更加理想,說(shuō)白了就是n次中我也許很多次取道的值都不是最小的,但是總體上來(lái)說(shuō),是最小的。

也就是說(shuō),可以找到這些數(shù)字處于中間大小的值,然后按照第一大的去a,第二大的去b,第三大的去b,第四大的去a,這樣的一種分配順序來(lái)做,我想應(yīng)該可以實(shí)現(xiàn)在N次選擇時(shí),可以保障每次所形成的兩個(gè)數(shù)組的差在平均的意義上說(shuō)是最小的。

時(shí)間緊迫,在看到題目后1分鐘所反映出的想法,估計(jì)有很多不到之處,還請(qǐng)各位大俠高手指點(diǎn),不要拍磚~~~~~~~~~~~~~~~~~~~~~~~~~~~~俺信心小,膽子薄~~~~~~~~~~~~~

其實(shí),操作系統(tǒng)最大的一個(gè)問(wèn)題就是穩(wěn)定性上,在一種均衡的情況下來(lái)得出平均的相對(duì)最優(yōu)值,不要執(zhí)著于一次或者某次的最小,而應(yīng)該把眼睛放到N次上,我想這也許是設(shè)計(jì)一個(gè)大系統(tǒng)的最根本的出發(fā)點(diǎn)吧,在下年級(jí)方才24,肯定有不對(duì)的地方,還望各大高手前輩多多指教!謝了~~~~~~~~~~~~

論壇徽章:
0
159 [報(bào)告]
發(fā)表于 2007-03-13 17:35 |只看該作者
原帖由 dpsuffix 于 2007-3-7 13:17 發(fā)表
#include <stdio.h>
int c[20];

int mcam(int *a,int *b)
{
        if( *a > *b)
                return 1;
        else if( *a == *b)
                return 0;
        else
         ...


閣下這個(gè)程序看著就不舒服!

論壇徽章:
0
160 [報(bào)告]
發(fā)表于 2007-08-26 22:15 |只看該作者
弄個(gè)鏈表,然后排序插入
不過(guò)挺惡心,華為又是筆試,1、2、3、4面試啥的,nnd完事了才給5K,而且還腆著
臉說(shuō)我們開(kāi)始低,不過(guò)漲工資是火箭似的, 也好意思說(shuō)
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP