1 条题解

  • 0
    @ 2023-6-11 12:17:59

    C++ :

    #include <iostream>
    using namespace std;
    
    //a数组存放部分肥胖基因染色,如果一段基因被之前的基因染色,那么就不需要锁 
    //b数组用来对肥胖基因全部染色 
    int n,m,a[1000010],b[1000010];
    string s,w;//s存放基因序列,w存放肥胖基因序列 
    int len,c;//len表示染色长度,c:代表基因锁个数 
    bool f;//判断基因是否染色 
    
    int main(){
    	cin>>n>>m;
    	cin>>s>>w;
    	int i,j;
    	//循环每个基因字符
    	for(i = 0;i < n;i++){
    		//如果当前连续m个字符不是肥胖基因 
    		if(s.substr(i,m) != w) continue;
    		
    		f = false;//假设该基因没有染色过,那么就需要锁
    		for(j = i;j < i + m;j++){
    			//如果该基因染色过,那么可以连带染色 
    			if(a[j] == 1){
    				f = true;
    				break;
    			}
    			a[j] = 1;//为基因染色 
    		} 
    		
    		//标记染色 
    		for(j = i;j < i + m;j++){
    			b[j] = 1;
    		} 
    		
    		//如果基因完全没有染色,则需要1把锁 
    		if(f == false) c++; 
    	}
    	
    	//计算肥胖基因长度
    	for(i = 0;i < n;i++){
    		if(b[i] == 1) len++;
    	} 
    	
    	cout<<len<<" "<<c<<endl;
    }
    
    
    • 1

    信息

    ID
    2449
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者