C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式?

// ConsoleApplication12.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
// ConsoleApplication12.cpp : 定义控制台应用程序的入口点。
//

#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int n, t, c;
	while (cin >> n)
	{
		cin >> t;
		cin >> c;
		vector<int> crimeVal;

		int num=0;
		//输入罪犯的罪行值
		for (int i = 0;i < n;i++)
		{
			int value;
			cin >> value;
			crimeVal.push_back(value);
		}

		for (int i = 0;i < crimeVal.size() - c+1;i++)
		{
			int sum = 0;
	//		cout << "i:" << i << endl;
			for (int j = i;j < c+i;j++)
			{
				sum = sum + crimeVal[j];
			}
			if (sum <= t)
			{
			   num++;
			}
			/*else
			{
			break;
			}*/
		}
	//	cout << "方案数目:";
		cout << num << endl;
	}



	return 0;
};
原文地址:https://www.cnblogs.com/wdan2016/p/6433890.html