• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Jounior

            once setback,once inspiration,once self-awareness
            重要的是這個磨練過程,而不是結果,要的是你粗壯的腿,而不是你身上背的那袋鹽巴

             

            Good C++ website

            熊春雷的專欄
            http://www.autodev.net/

            http://blog.csdn.net/pandaxcl
            杜中偉
            http://www.shnenglu.com/duzhongwei/
            http://blog.csdn.net/win32asn
            http://www.stlchina.org/
            G9
            http://blog.csdn.net/pongba/archive/2007/12/11/1930150.aspx

            posted @ 2008-04-02 10:17 snowball 閱讀(304) | 評論 (0)編輯 收藏

            求得含有最多連續特定字符個數的字符串

            int ?GetMaxCountofContinuousLetter( char ? * ?p, char ?searchChar)
            {
            ????
            int ?maxCount? = 0 ;
            ????
            int ?currentCount? = ? 0 ;
            ????
            while ( 1 )
            ????
            {
            ????????
            if ( * p? == ?searchChar)
            ????????
            {
            ????????????currentCount?
            = ? 0 ;
            ????????????
            while ( * p? && ? * p? == ?searchChar)
            ????????????
            {
            ????????????????currentCount?
            ++ ;
            ????????????????p
            ++ ;
            ????????????}

            ????????????
            if (maxCount? < ?currentCount)
            ????????????????maxCount?
            = ?currentCount;
            ????????}

            ????????
            if ( * p? == ? ' \0 ' )?
            ????????????
            break ;
            ????????
            else
            ????????????p
            ++ ;
            ????}

            ????
            return ?maxCount;
            }

            int ?main()?????
            {??
            ????
            char ? * p[ 3 ] =
            ????
            {
            ????????
            " String(1)8818882348888856788888888988888888880 " ,
            ????????
            " String(2)881888234888885678888888898888888880 " ,
            ????????
            " String(3)8818882348888856788888888988888888888888880 "
            ????}
            ;
            ????
            int ?location? = ? 0 ;
            ????
            char ?searchChar? = ? ' 8 ' ;
            ????
            int ?tempCount? = ? 0 ;
            ????
            int ?maxCount? = ? 0 ;
            ????
            for ( int ?i? = ? 0 ;i < sizeof (p) / sizeof ( * p);i ++ )
            ????
            {
            ????????tempCount?
            = ?GetMaxCountofContinuousLetter(p[i],searchChar);
            ????????
            if (?tempCount? > ?maxCount)
            ????????
            {
            ????????????maxCount?
            = ?tempCount;
            ????????????location?
            = ?i;
            ????????}

            ????}

            ????cout
            << " the?string?of?maxCount?is?:? " << p[location] << endl;
            ????cout
            << " the?count?of??the?continuous?letters?is?:? " << maxCount << endl;
            ????cin.
            get ();
            }

            posted @ 2008-04-02 09:30 snowball 閱讀(313) | 評論 (0)編輯 收藏

            排序

                 摘要: 排序算法  閱讀全文

            posted @ 2008-04-02 09:26 snowball 閱讀(226) | 評論 (0)編輯 收藏

            從str中刪除remove中含有的字符

            /* **************************************** */
            /* ?從str中刪除remove中含有的字符?????????? */
            /* **************************************** */
            void ?RemoveChar( char ?str[],? char ?remove[])
            {
            ????
            int ?dst,src;
            ????
            char ?removeArray[ 256 ];
            ????puts(str);
            ????puts(remove);
            ????
            for (src = 0 ;src < 256 ;src ++ )
            ????
            {
            ???????removeArray[src]
            = 0 ;
            ????}

            ????src
            = 0 ;
            ????
            while (remove[src])
            ????
            {
            ???????removeArray[remove[src
            ++ ]] = 1 ;
            ????}

            ????src
            = 0 ;dst = 0 ;
            ????
            while (str[src])
            ????
            {
            ????????
            if ( ! removeArray[str[src]])
            ????????
            {
            ????????????str[dst
            ++ ] = str[src];
            ????????}

            ????????src
            ++ ;
            ????}

            ????str[dst]
            = 0 ;
            ????puts(str);
            }

            posted @ 2008-04-02 09:25 snowball 閱讀(958) | 評論 (0)編輯 收藏

            Write a routine that prints out a 2-D array in spiral order

            ???? jeccy (燕飛月天) 于 2006年10月28日21:37:09 星期六 提到:

            我的理解,給定2維數組
            1 2 3三角形判斷
            8 9 4
            7 6 5
            “螺旋式”順序輸出:1 2 3 4 5 6 7 8 9
            【 在 bluexyz (數據結構是根本) 的大作中提到: 】

            ? private ? static ? void ?PrintNumberasSpiralOrder()
            ????????
            {
            ????????????
            // 1??2??3???4
            ????????????
            // 12?13?14??5
            ????????????
            // 11?16?15??6
            ????????????
            // 10?9???8??7
            ????????????
            ????????????
            // 1,??2?,?3,??4,??5
            ????????????
            // 16,?17,?18,?19,?6
            ????????????
            // 15,?24,?25,?20,?7
            ????????????
            // 14,?23,?22,?21,?8
            ????????????
            // 13,?12,?11,?10,?9
            ???????????? int [,]?a? = ? new ? int [,]
            ????????????
            {? {? 1 ,? 2 ,? 3 ,? 4 ,? 5 ?} ,?
            ????????????
            {? 16 ,? 17 ,? 18 ,? 19 ,? 6 ?} ,?
            ????????????
            {? 15 ,? 24 ,? 25 ,? 20 ,? 7 ?} ,
            ????????????
            {? 14 ,? 23 ,? 22 ,? 21 ,? 8 ?} ,
            ????????????
            {? 13 ,? 12 ,? 11 ,? 10 ,? 9 ?} ?}
            ;
            ????????????
            // int[,]?a?=?new?int[,]?{?{?1,?2,?3,?4?},?{?12,?13,?14,?5?},?{?11,?16,?15,?6?},?{?10,?9,?8,?7?}?};
            ????????????
            // int[,]?a?=?new?int[,]?{?{?1,?2?},?{4,3}?};
            ???????????? const ? int ?N? = ? 5 ;
            ????????????
            // ?spiral
            ???????????? for ?( int ?i? = ?N? - ? 1 ,?j? = ? 0 ;?i? > ? 0 ;?i -- ,?j ++ )
            ????????????
            {
            ????????????????
            // i?從最大維度數開始
            ????????????????
            // j?從最小維度數開始
            ????????????????
            // i--來縮小范圍
            ????????????????
            // j++來縮小范圍
            ????????????????
            // k?增長縮小因子
            ???????????????? for ?( int ?k? = ?j;?k? < ?i;?k ++ )
            ????????????????????System.Console.Write(
            " {0}? " ,?a[j,?k]);?Console.WriteLine( "" );
            ????????????????
            for ?( int ?k? = ?j;?k? < ?i;?k ++ )
            ????????????????????System.Console.Write(
            " {0}? " ,?a[k,?i]);?Console.WriteLine( "" );
            ????????????????
            for ?( int ?k? = ?i;?k? > ?j;?k -- )
            ????????????????????System.Console.Write(
            " {0}? " ,?a[i,?k]);?Console.WriteLine( "" );
            ????????????????
            for ?( int ?k? = ?i;?k? > ?j;?k -- )
            ????????????????????System.Console.Write(
            " {0}? " ,?a[k,?j]);?Console.WriteLine( "" );
            ????????????}

            ????????????
            // ?special?case?for?middle?element?if?N?is?odd
            ????????????
            // 如果是奇數,則要條印中間的數。
            ???????????? if ?(N? % ? 2 ? == ? 1 )?System.Console.Write(a[(N? - ? 1 )? / ? 2 ,?(N? - ? 1 )? / ? 2 ]);
            ????????}

            Reference : http://bigtiger2005.spaces.live.com/blog/cns!4e967c6fe38e7c14!141.entry?wa=wsignin1.0

            posted @ 2008-04-02 09:23 snowball 閱讀(269) | 評論 (0)編輯 收藏

            100扇門,100個人,第i個人經過門號可以整除i的門。經過時,如果門開就關,如果門關就開。問最后所有門的狀態是什么。

            #include??? < stdio.h > ?

            #define ???N???100?
            #define ???OPEN???1?
            #define ???CLOSED???0?

            void ???switch_door( int ??? * door)?
            {?
            ????????
            if ( * door??? == ???OPEN)?
            ????????????????
            * door??? = ???CLOSED;?
            ????????
            else ?
            ????????????????
            * door??? = ???OPEN;?
            }
            ?

            int ???main( void )?
            {?
            ????????
            int ???door[N??? + ??? 1 ];??? // ???waste???a???door?
            ???????? int ???person;?
            ????????
            int ???i;?

            ????????
            for (i??? = ??? 1 ;???i??? <= ???N;???i ++ )?
            ????????????????door[i]???
            = ???OPEN;??? // ???all???doors???are???open???at???first?

            ????????
            for (i??? = ??? 1 ;???i??? <= ???N;???i ++ )?
            ????????????????
            for (person??? = ??? 1 ;???person??? <= ???N;???person ++ )??? // ???person???pass???through???the???door?
            ???????????????????????? if (i??? % ???person??? == ??? 0 )?
            ????????????????????????????????switch_door(
            & door[i]);?

            ????????
            for (i??? = ??? 1 ;???i??? <= ???N;???i ++ )?
            ????????????????printf(?
            " door???%d:???%s\n? " ,???i,???door[i]??? ? ??? " Open? " ???:??? " Closed? " );?

            ????????
            return ??? 0 ;?
            }
            ?

            給一個此題的思想:
            要看門的狀態,主要是看這扇門開關次數,開關奇數次會使門的狀態改變,而偶數次就不會。而只要能夠知道當前門的編號能夠整除的自然數,就可以知道門的狀態是否改變了。從而知道門當最終的狀態。

            下面我們將所有的數分為兩組,平方數(1,4,9……)和非平方數(為什么要這么分?下面就知道了)。
            現在討論非平方數的情況。我們假設門號為N,同時假設從1開始到int(N^(1/2))(也就是N的開方數舍小數取整),總共有M個數能整除N,則從int(N^(1/2))+1到N,總共則對應也有M個數能夠將N整除。(這句話仔細想一下)。
            在此,就有2*M個數能將N整除,它是一個偶數。因此門開關了偶數次,門的狀態最后不會被改變。

            現在討論平方數,因為N^(1/2)這個數是一個整數,因此我們將從1到N的所有的數用N^(1/2)這個數分成兩部分(不包括N^(1/2)),同樣假設前半部分有M個數可以將N整除,則后半部分也有M個數可以將N整除,這樣就有2*M個數可以整除N了,再加上N^(1/2)這個數。總共就有2*M+1個數可以整除N,也就是編號為N的門會開關2*M+1次,門的狀態就會被改變了。

            綜上,如果門號數是平方數的,門的狀態就會發生改變,而不是平方數的就不會改變狀態了。因此,只要檢查門是否為完全平方數就可以判斷門的狀態為開還是為關了。

            帖上代碼:?
            #include???
            < iostream > ?
            #include???
            < cmath > ?
            using ??? namespace ???std;?

            int ???main()?
            {?
            ????????
            int ???k;?
            ????????
            for ( int ???i??? = ??? 1 ;???i??? <= 100 ;???i ++ )?
            ????????
            {?
            ????????cout???
            < ? < ??? " Door??? " ??? < ? < ???i???;?
            ????????k???
            = ??? int (sqrt(i));?
            ????????
            if (k * k??? == ???i)?
            ????????cout???
            < ? < ??? " :???Closed? " ;?
            ????????
            else ?
            ????????cout???
            < ? < ??? " :???Open? " ;?
            ????????cout???
            < ? < ???endl;?
            ????????}
            ?
            return ??? 0 ;?
            }
            ?
            當然,這是利用了人數與門數是相等的情況。如果個數不同的話,還是按照一樓的來。

            Reference : http://topic.csdn.net/u/20070620/14/3d5e96d5-169a-4bc6-887c-ca8639cd8c63.html

            posted @ 2008-04-02 09:20 snowball 閱讀(711) | 評論 (0)編輯 收藏

            統計1的個數

            統計1的個數

            int ?func(x)
            {
            ????
            int ?countx? = ? 0 ;
            ????
            while (x)
            ????
            {
            ????????countx
            ++ ;
            ????????x?
            = ?x & (x - 1 );
            ????}

            ????
            return ?countx;
            }
            ?

            假定x?
            = ? 9999
            10011100001111
            答案:?
            8


            將x轉化為2進制,看含有的1的個數

            x
            = x & (x - 1 )?這種算法是把一個二進制數最右邊的一個1變成0

            然后呢?

            x
            - 1與x區別在于最后二進制的1

            每執行一次x?
            = ?x & (x - 1 ),會將x用二進制表示時最右邊的一個1變為0,因為x - 1將會將該位(x用二進制表示時最右邊的一個1)變為0。

            如果是二進制100,
            - 1 ,則為011

            如果是二進制101,
            - 1則為100

            與原數一與,就1后面的數,包括1全都與掉

            明白,謝謝了?

            不客氣


            思路: 將x轉化為2進制,看含有的1的個數。
            注: 每執行一次x = x&(x-1),會將x用二進制表示時最右邊的一個1變為0,因為x-1將會將該位(x用二進制表示時最右邊的一個1)變為0。(1) 如果一個數是2的n次方,那么這個數用二進制表示時其最高位為1,其余位為0。
            判斷一個數(x)是否是2的n次方

            #include? < stdio.h >

            int ?func(x)
            {
            ????
            if (?(x & (x - 1 ))? == ? 0 ?)
            ????????
            return ? 1 ;
            ????
            else
            ????????
            return ? 0 ;
            }


            int ?main()
            {
            ????
            int ?x? = ? 8 ;
            ????printf(
            " %d\n " ,?func(x));
            ?}

            posted @ 2008-04-02 09:17 snowball 閱讀(1136) | 評論 (0)編輯 收藏

            全排列的生成算法

                 摘要: 全排列的生成算法就是對于給定的字符集,用有效的方法將所有可能的全排列無重復無遺漏地枚舉出來。任何n個字符集的排列都可以與1~n的n個數字的排列一一對應,因此在此就以n個數字的排列為例說明排列的生成法。n個字符的全體排列之間存在一個確定的線性順序關系。所有的排列中除最后一個排列外,都有一個后繼;除第一個排列外,都有一個前驅。每個排列的后繼都可以從 它 的前驅經過最少的變化而得到,全排列的生成算法就是...  閱讀全文

            posted @ 2008-04-02 09:06 snowball 閱讀(1455) | 評論 (1)編輯 收藏

            進制轉換程序

            ? void ?test10_2( void )
            ??
            {
            ???
            static ? char ? const * ?szHexDigits? = ? " 01 " ;
            ???unsigned?
            char ?b? = ? 16 ;
            ???cout?
            << ?szHexDigits[(b? >> ? 7 )? & ? 0x01 ]? << ?szHexDigits[(b? >> ? 6 )? & ? 0x01 ]? << ? ' ? ' ;
            ???cout?
            << ?szHexDigits[(b? >> ? 5 )? & ? 0x01 ]? << ?szHexDigits[(b? >> ? 4 )? & ? 0x01 ]? << ? ' ? ' ;
            ???cout?
            << ?szHexDigits[(b? >> ? 3 )? & ? 0x01 ]? << ?szHexDigits[(b? >> ? 2 )? & ? 0x01 ]? << ? ' ? ' ;
            ???cout?
            << ?szHexDigits[(b? >> ? 1 )? & ? 0x01 ]? << ?szHexDigits[(b? >> ? 0 )? & ? 0x01 ]? << ? ' ? ' ;
            ?}
            ? void ?test10_16( void )
            ??
            {
            ????
            static ? char ? const * ?szHexDigits? = ? " 0123456789abcdef " ;???
            ???unsigned?
            char ?b? = ? 16 ;
            ???cout?
            << ?szHexDigits[(b? >> ? 4 )? & ? 0x0f ]? << ?szHexDigits[b? & ? 0x0f ]? << ? ' ? ' ;
            ?}

            posted @ 2008-04-02 09:02 snowball 閱讀(338) | 評論 (0)編輯 收藏

            僅列出標題
            共2頁: 1 2 

            導航

            留言簿(1)

            隨筆分類

            友情鏈接

            搜索

            最新隨筆

            最新評論

            閱讀排行榜

            久久Av无码精品人妻系列| 久久久久亚洲av无码专区导航| 97久久精品国产精品青草| 久久久久久免费视频| 亚洲国产精品婷婷久久| 久久午夜无码鲁丝片| 亚洲精品乱码久久久久久按摩| 亚洲精品乱码久久久久久不卡| 国产精品成人99久久久久| 亚洲欧美精品伊人久久| 97久久超碰国产精品2021| 久久久精品人妻一区二区三区蜜桃| 伊人久久大香线蕉综合影院首页| 久久国产色av免费看| 国产成人精品综合久久久| 久久亚洲精品无码AV红樱桃| 色婷婷久久综合中文久久蜜桃av| 无码人妻久久久一区二区三区| 久久精品一本到99热免费| 97热久久免费频精品99| 91麻豆精品国产91久久久久久| 久久精品成人欧美大片| 天天综合久久一二三区| 国产成人精品综合久久久久| 无码人妻久久一区二区三区免费 | 久久综合香蕉国产蜜臀AV| 东京热TOKYO综合久久精品| 免费国产99久久久香蕉| 久久久中文字幕日本| 欧美亚洲国产精品久久久久| 亚洲狠狠婷婷综合久久久久| 久久精品国产99久久久| 亚洲国产成人久久精品影视 | 99久久国产亚洲高清观看2024 | 青草影院天堂男人久久| 久久精品成人免费看| 国产精品丝袜久久久久久不卡| 久久亚洲国产成人影院网站| 久久婷婷五月综合97色| 日本免费一区二区久久人人澡| 久久亚洲中文字幕精品一区四|