最长不重复子串+质因数分解算法

来源:互联网 发布:c 用指针链接两个数组 编辑:程序博客网 时间:2024/05/17 00:15
#include<stdio.h>#include<string.h>/* 求最长不重复子串                                                     *//************************************************************************/void lnorepstr(char*  s){    char A[26];    int  i, j;    int  maxi, maxlen = 0;    int  len = strlen(s);//    for(i = 0; i < 26; i++)//        A[i] = -1;    memset(A, -1, 26);    for (i = 0; i < len; i++)    {        A[s[i] - 'a'] = 1;        for(j = i+1 ; j < len; j++)        {            if(A[s[j]-'a'] == -1) //该字符没有出现            {                A[s[j]-'a'] = 1;                if(j - i> maxlen)                {                    maxlen = j - i;                    maxi = i;                }            }            else                break;        }        memset(A, -1, 26);    }    printf("longest no repeat string: %.*s\n", maxlen+1, &s[maxi]);}int main(){    lnorepstr("abcbef");    return 0;}
/*将一个正整数进行质因数分解                                      *//* 90=2*3*3*5                                                     *//******************************************************************/#include<iostream>#include<cmath>#include<vector>using namespace std;bool isprime(int n){if(n<2)return false;for(int i=2;i<=sqrt(double(n));i++)if(n%i==0)return false;return true;}void printyinzi(int n,vector<int> & a,vector<int> & b){cout<<n<<"=";for(int i=0;i<a.size();i++){while(n%a[i]==0){b.push_back(a[i]);n/=a[i];}if(n==0)break;}}int main(){vector<int> a,b;a.push_back(2);a.push_back(3);int n;cin>>n;for(int i=5;i<=n/2;i++)if(isprime(i))a.push_back(i);printyinzi(n,a,b);if(b.size()==0)cout<<"no yinzi"<<endl;else {cout<<b[0];if(b.size()>1){for(i=1;i<b.size();i++)cout<<"*"<<b[i];}}cout<<endl;    return 0;}


原创粉丝点击