<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一路拾遺
    Collect By Finding All The Way ......
    posts - 81,comments - 41,trackbacks - 0
    //前序中序求后序 
    #include<iostream>
    #include
    <string>
    using namespace std;
    void cc(int s,int e);
    char a[26],b[26];
    int main()
    {
        
    while(cin>>a>>b)
        
    {
            
    int len=strlen(a);
            cc(
    0,len-1);
            cout
    <<endl;
        }

        
    return 0;
    }


    void cc(int s,int e)
    {   
        
    for(int i=0;i<26;i++)
            
    for(int j=s;j<=e;j++)
                
    if(a[i]==b[j])
                
    {
                    cc(s,j
    -1);
                    cc(j
    +1,e);
                    cout
    <<a[i];
                    
    return;
                }

    }


    //結(jié)構(gòu)體typedef
    #include<stdio.h>
    typedef 
    struct tree_node{
        
    char value;
        
    struct tree_node* left;
        
    struct tree_node* right;
    }
     node; 

    //素?cái)?shù)
    #include<iostream>
    #include
    <cmath>
    using namespace std;
    int  is_prime(int x)

        
    if(x == 1)return 0;
        
    int t = (int)sqrt(x);   
        
    for(int i=2; i<=t; i++)
            
    if(x%== 0)
                
    return 0;
        
    return 1;
    }
     

    //動(dòng)態(tài)規(guī)劃   矩陣鏈  2118

    #include
    <iostream>
    using namespace std;
    int a[10][2];
    long long f[10][10];
    int kay[10][10];
    int c(int i,int j)
    {
        
    if(i==j){kay[i][j]=i;return 0;}

        
    int u=c(i,i)+c(i+1,j)+a[i][0]*a[i][1]*a[j][1];
        kay[i][j]
    =i;
        
    for(int k=i+1;k<j;k++)
        
    {
            
    int r=c(i,k)+c(k+1,j)+a[i][0]*a[k][1]*a[j][1];
            
    if(r<u)
            
    {
                u
    =r;
                kay[i][j]
    =k;
            }

        }

        
    return u;
    }

    void traceback(int i,int j)
    {
        
    if(i==j)cout<<'A'<<i+1;
        
    else
        
    {
            cout
    <<'('//int p;cin>>p;
            traceback(i,kay[i][j]);
            cout
    <<" x ";
            traceback(kay[i][j]
    +1,j);
            cout
    <<')';
        }

    }

    int main()
    {
        
    int n;int k=0;
        
    while(cin>>n&&n!=0)
        
    {
            memset(kay,
    0,sizeof(kay));
            memset(f,
    0,sizeof(f));
            
    for(int i=0;i<n;i++)
                cin
    >>a[i][0]>>a[i][1];
            c(
    0,n-1);
            cout
    <<"Case "<<++k<<""
            traceback(
    0,n-1); //int p;cin>>p;
            cout<<endl;   
        }

        
    return 0;
    }

     
    //最長(zhǎng)公共子串
     
     #include
    <iostream>
    using namespace std;
    char s1[1000];
    char s2[1000];

    int dp[1000][1000];

    int main()
    {
        
    while(cin>>s1>>s2)
        
    {
        
    int len1 = strlen(s1);
        
    int len2 = strlen(s2);
        
        
    for(int i=0;i<=len1;i++)
            dp[i][
    0]=0;
        
    for(int i=0;i<=len2;i++)
            dp[
    0][i]=0;
        
        
    for(int i=0;i<len1;i++)
            
    for(int j=0;j<len2;j++)
            
    {
                
    if(s1[i]==s2[j])
                    dp[i
    +1][j+1]=dp[i][j]+1;
                
    else
                
    {
                    dp[i
    +1][j+1= dp[i][j+1]>dp[i+1][j]?dp[i][j+1]:dp[i+1][j];
                    
                }

                   
            }

        cout
    <<dp[len1][len2]<<endl;
        }

        
    return 0;
    }


    //The Tower of Babylon 

    #include
    <iostream>
    using namespace std;
    int a[90][3];
    int dp[90];
    int main()
    {
        
    int n,cnt=0;
        
    while(cin>>n&&n)
        
    {
            
    int x;
            
    for(int i=0;i<n;i++)
                
    for(int j=0;j<3;j++)
                
    {
                    cin
    >>x;
                    
    for(int k=0;k<3;k++)
                        a[i
    *3+k][(j+k)%3]=x;
                }

          
            
            
    for(int i=0;i<3*n;i++)
                
    if(a[i][0]>a[i][1])
                        swap(a[i][
    0],a[i][1]);
            
            
    for(int i=0;i<3*n;i++)
                
    for(int j=i+1;j<3*n;j++)
                    
    if(a[i][1]>a[j][1])
                        
    for(int k=0;k<3;k++)
                            swap(a[i][k],a[j][k]);
            
            dp[
    0]=a[0][2];
            
            
    int maxmax=0
            
    for(int i=1;i<3*n;i++)
            
    {
                
    int max=0;
                
    for(int j=0;j<i;j++)
                    
    if(a[j][0]<a[i][0]&&a[j][1]<a[i][1]&&max<dp[j])
                        max
    =dp[j];
                dp[i]
    =max+a[i][2];
                
    if(maxmax<dp[i])maxmax=dp[i];
            }

            cout
    <<"Case "<<++cnt<<": maximum height = "<<maxmax<<endl;
        }

        
    return 0;
    }


    //二進(jìn)制數(shù)中1的個(gè)數(shù)
    #include<iostream>
    using namespace std;
    int main()
    {
        
    int n;
        
    while(cin>>n&&n)
        
    {
            
    int k = 0;
            
    while(n)
            
    {
                n 
    &= (n-1);
                k
    ++;
            }

            cout
    <<k<<endl;
        }

    }


    //二分搜索
    #include<iostream>
    using namespace std;
    int binarysearch(int t);
    int n,a[100];//sorted
    int main()
    {
        
    while(cin>>n&&n)
        
    {
            
    int t;
            
    for(int i=0;i<n;i++)
                cin
    >>a[i];
            cin
    >>t;
            cout
    <<binarysearch(t)<<endl;
        }

    }


    int binarysearch(int t)
    {
        
    int l=0,u=n-1,m;
        
    while(l<=u)
        
    {
            m
    =(l+u)/2;
            
    if(a[m]<t)
                l 
    = m+1;
            
    else if(a[m]==t)
                
    return m;
            
    else
                u 
    = m-1;          
        }

        
    return -1;
    }
     

    //歸并排序mergesort

    #include
    <iostream>
    using namespace std;

    const int MAXN = 1000;
    int a[MAXN], b[MAXN];

    void merge(int left, int mid, int right)
    {
        
    int i=left, j=mid+1, k=left;
        
    while(i<=mid && j<=right)
            
    if(a[i] < a[j])
                b[k
    ++= a[i++];
            
    else
                b[k
    ++= a[j++];
        
    while(i<=mid)
            b[k
    ++= a[i++];

        
    while(j<=right)
            b[k
    ++= a[j++];
        
    for(i=left; i<=right; i++)
            a[i] 
    = b[i];
    }


    void mergeSort(int left, int right)
    {
        
    if(left<right)
        
    {
            
    int mid=(left+right)/2;
            mergeSort(left, mid);
            mergeSort(mid
    +1, right);
            merge(left, mid, right);
        }

    }

    int main()
    {
        
    int i, n;
        cin 
    >> n;
        
    for(i=0; i<n; i++)
            cin 
    >> a[i];
        mergeSort(
    0, n-1);
        
    for(i=0; i<n; i++)
            cout 
    << a[i] << " ";
        cout 
    << endl;
        
    return 0;
    }

     
    //快速排序
    #include<iostream>
    using namespace std;
    int n,a[100];
    void qsort1(int l, int u);
    int main()
    {
        
    int n;
        
    while(cin>>n&&n)
        
    {
            
    for(int i=0;i<n;i++)
                cin
    >>a[i];
            qsort1(
    0,n-1);
            
    for(int i=0;i<n;i++)
                cout
    <<a[i]<<" ";
        }

        
    return 1;
    }


    void qsort1(int l, int u)
    {
        
    if(l>=u)
            
    return;
        
    int m = l;
        
    for(int i=l+1;i<=u;i++)
        
    {
            
    if(a[i]<a[l])
                swap(a[
    ++m],a[i]);
        }
          swap(a[l],a[m]);

        qsort1(l,m-1);
        qsort1(m
    +1,u); 
    }
     


    //找出n個(gè)數(shù)中第k大的數(shù),復(fù)雜度為:O(N*logK) 
    #include<iostream>
    using namespace std;
    int kmax(int l, int u, int k);
    int n,a[100];
    int main()
    {
        
    int k,n;
        
    while(cin>>n&&n)
        
    {
            cin
    >>k;
            
    for(int i=0;i<n;i++)
                cin
    >>a[i];
            cout
    <<kmax(0,n-1,k)<<endl; 
            
        }

        
    return 1;
    }


    int kmax(int l, int u, int k)
    {
        
    if(l==u)
            
    return a[l];
        
    int m = l;
        
    for(int i=l+1;i<=u;i++)
        
    {
            
    if(a[i]<a[l])
            
    {
                swap(a[
    ++m],a[i]);
            }

            swap(a[l],a[m]);
        }

        
    if(m-l<k)
            
    return kmax(m+1,u,k-(m-l+1));
        
    else if(m-l==k)
            
    return a[m];
        
    else return kmax(l,m-1,k);
     
    }


    //生成n以內(nèi)隨機(jī)序列 
    //注意保證:第i個(gè)數(shù)出現(xiàn)在自己的位置上 
    #include<iostream>
    using namespace std;
    int a[100];

    int main()
    {
        
    int n;
        
    while(cin>>n&&n)
        
    {
            a[
    1]=1;
            
    for(int i=2;i<=n;i++)
            
    {
                a[i]
    =i;
                swap(a[rand()
    %i+1],a[i]);
            }

            
    for(int i=1;i<=n;i++)
                cout 
    << a[i] << " ";
            cout
    <<endl;
        }

        
    return 0;
    }



    //生成n以內(nèi)m個(gè)有序列 

    #include
    <iostream>
    using namespace std;
    int a[100];

    int main()
    {
        
    int n,m;
        
    while(cin>>n>>m&&n)
        
    {
            
    for(int i=0;i<n;i++)
                
    if((rand()%(n-i))<m)
                
    {
                    cout
    <<i<<"";
                    m
    --;
                }

            cout
    <<endl;
        }

        
    return 0;
    }


    //堆排序

    #include
    <iostream>
    using namespace std;
    int heap[100],len;

    void insert(int value)
    {
        
    int parent,child;
        heap[len] 
    = value;
        child 
    = len++;
        parent 
    = (child-1)/2;
        
    while(child != 0)
        
    {
            
    if(heap[parent]>value)
            
    {
                swap(heap[child],heap[parent]);
                child 
    = parent;
                parent 
    = (child-1)/2;
            }

            
    else
                
    return;
        }

    }


    int remove()
    {
        
    int root = heap[0];
        heap[
    0= heap[--len];
        
    int parent = 0, child, left, right;
        
    while(true)
        
    {
            left 
    = parent * 2 + 1;     
            right 
    = parent * 2 + 2;
            
    if(left>=len) break;
            
    if(right>=len) child = left;
            
    else
                child 
    = heap[left]>heap[right]?right:left;
            
            
    if(heap[parent]>heap[child])
            
    {
                swap(heap[parent], heap[child]);
                parent 
    = child;
            }

            
    else
                
    break;
        }

        
    return root;
    }


    int main()
    {
        
    int k;
        
    while(cin>>k&&k)
        
    {
            len
    =0;
            
    for(int i=0;i<k;i++)
            
    {
                
    int a;
                cin
    >>a;
                insert(a);
            }

            
    for(int i=0;i<k;i++)
                cout
    <<remove()<<" ";
        }

    }


    /*最長(zhǎng)重復(fù)子串
    **共分3步
    **1.得到后綴數(shù)組
    **2.對(duì)后綴數(shù)組按字母順序排序
    **3.比較相鄰兩個(gè),并且一定是從開(kāi)頭就開(kāi)始比較,得到兩個(gè)的最長(zhǎng)公共長(zhǎng)度。
    **4.取所有比較結(jié)果的最大值。
    */
     
    #include
    <iostream>
    using namespace std;
    char a[100],b[100][100];

    int comlen(char *p, char *q)
    {
        
    int i=0;
        
    while(*p&&(*p++==*q++))
            i
    ++;
        
    return i;
    }

    //qsort要求的cmp參數(shù)格式 
    int cmp(const void *p, const void *q)
    {
        
    return strcmp((const char*)p, (const char*)q);
    }


    int main()
    {
        
    while(cin>>a)
        
    {
            
    int len = strlen(a);
            
    for(int i=0;i<len;i++)
            
    {
                
    int j = i;
                
    int k = 0;
                
    while(a[j])
                    b[i][k
    ++]=a[j++];
            }

            qsort(b,len,
    sizeof(b[0]),cmp);
            
    int re = 0;
            
    for(int i=0;i<len-1;i++)
            
    {
                
    int com = comlen(b[i], b[i+1]);
                re 
    = max(re, com);
            }

            cout
    <<re<<endl;
        }

        
    return 0;
    }


     
    posted on 2010-09-05 16:08 胖胖泡泡 閱讀(423) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久亚洲AV成人无码| 亚洲乱码一区二区三区在线观看| 免费一级特黄特色大片在线观看| 亚洲无线观看国产精品| 亚洲最新中文字幕| 黄色a三级免费看| 91老湿机福利免费体验| 免费国产成人高清视频网站| 亚洲专区先锋影音| 高潮毛片无遮挡高清免费| 久久WWW免费人成一看片| 亚洲精品色婷婷在线影院| 亚洲国产精品成人久久久| 一级做a爰片久久毛片免费看| 999久久久免费精品国产| 亚洲日韩欧洲无码av夜夜摸| 亚洲无码一区二区三区| 国产高清不卡免费视频| 国产片免费福利片永久| 亚洲欧洲日产国码二区首页| 一个人看的免费观看日本视频www| 久久久久国色AV免费观看性色| 亚洲精品无码久久久久sm| 综合一区自拍亚洲综合图区| 99久久免费精品高清特色大片| 亚洲一区视频在线播放| 亚洲人成色4444在线观看| 1区2区3区产品乱码免费| 亚洲日本va在线视频观看| 亚洲av无码专区首页| 精品免费人成视频app| 亚洲精品美女久久777777| 国产成人亚洲精品无码AV大片| 2021国内精品久久久久精免费| 亚洲人成色7777在线观看| 国产AV无码专区亚洲AV麻豆丫| 一二三四免费观看在线电影| 亚洲男人的天堂在线播放| 中文字幕视频免费在线观看| 免费一级毛片女人图片| 亚洲熟妇AV一区二区三区浪潮|