最长不重复子串+质因数分解算法
来源:互联网 发布: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;}