zoukankan      html  css  js  c++  java
  • 小明买了一些彩色的气球用绳子串在一条线上,想要装饰房间,每个气球都染上了一种颜色,每个气球的形状都是各不相同的。我们用1到9一共9个数字表示不同的颜色,如12345则表示一串5个颜色各不相同的气球串。但小明希望得到不出现重复颜色的气球串,那么现在小明需要将这个气球串剪成多个较短的气球串,小明一共有多少种剪法?如原气球串12345的一种是剪法是剪成12和345两个气球串。

    include "stdafx.h"

    #include<iostream>  
    #include<vector>  
    #include<string>
    #include<algorithm>
    #include<math.h>
    #include<iomanip>
    #include<numeric>
    #include<list>
    #include<deque>
    #include<queue>
    
    using namespace std;
    
    
    int main()
    {
    	int n;
    	while (cin>>n)
    	{
    		vector <int> numVec; //存储气球的个数
    		vector <int> colors; //存储颜色
    
    		int num;
    		cin >> num;
    		colors.push_back(num);
    
    		numVec.push_back(1);//当有零个气球时
    		numVec.push_back(1);//当有一个气球时
    	
    
    		for (int i = 1;i < n;i++)
    		{
    			int num;
    			cin >> num;
    			
    			int cp = colors.size()-1;
    			int np = numVec.size()-1;
    			long long p = numVec[np];
    		//	cout << "概率:" << p << endl;
    
    			for (int j = colors.size()- 1;j >= 0;j--)
    			{
    				if (colors[j] != num)
    				{
    					bool flag = true;
    
    					for (int k = j+1;k < colors.size();k++)//前面有任何一个气球和j相等则不能把气球j和后面的气球分成一组
    					{
    						if (colors[k] == colors[j])
    						{
    							flag = false;
    						}
    					}
    					if (flag == true)
    					{
    						p += numVec[np - cp + j - 1];
    					}
    					else
    					{
    						break;
    					}
    					
    				}
    				else
    				{
    					break;
    				}
    			}
    				
    			numVec.push_back(p%1000000007);//不要忘了取余数!!!!!!
    		//	cout << "概率:" << p << endl;
    			colors.push_back(num);
    		
    		}
    		cout << numVec[numVec.size() - 1] << endl;
    	}
    	return 0;
    }
  • 相关阅读:
    30岁前不必在乎的28件事
    开发工作的枯燥与快乐
    Ajax技术的初步认识二(转)
    算法实习一
    判断程序是否运行的代码 (有点单例模式的味道)
    SQL2008+SERVER2008的解决方案
    天秤座的爱情(转)
    VB sytem32\ieframe.dll找不到的解决方案
    回忆有感《清明雨上》
    Ajax技术的初步认识一(转)
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6597050.html
Copyright © 2011-2022 走看看