Ejercicio 4_8 uva12108 estudiantes en particular con sueño (pequeña analógicas)

Esta pregunta depende del mapa, durante el tiempo que leer el mapa, a continuación, Mo era un problema,
he usado para juzgar la corriente, cada ciclo 1, si se ha excedido el período, entonces la gente se despertaron a igual a 1
y luego determinar la corriente dormido o despierta en la línea
siguiente es crítico para la gente a dormir en el próximo juicio, si él sólo puede insistir en que Mo era cierto, lo dejó ciclo es 0, por lo que la próxima vez más un 1 simplemente perfecto!

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n,a[23],b[23],zhou[23];
	for (int t = 1; scanf("%d",&n)==1 && n; t++)
	{
		int fen = 1,ok = 0;    //分就是当前时间
		  for (int i = 0; i < n; i++)
		      scanf("%d%d%d",&a[i],&b[i],&zhou[i]);
		int shui = 0,xin = 0;    //睡的和醒的 
		for (int i = 0; i < n; i++)     //刚开始要先判断 
		{
			if(zhou[i] > a[i]) shui++;
			else xin++;
		}
		if(xin == n) ok = 1;
		if(!ok)
		{
			for (int i = 2; i < 10000;i++)  //如果都10000次还没找到那就是莫得了
			{
				xin = 0; shui = 0;
				for (int j = 0;j < n; j++)//看的是当前 
				{
					zhou[j]++; 
					if(zhou[j] > a[j]+b[j]) zhou[j] = 1;//如果此时大于则是醒了 
					if(zhou[j] <= a[j]) xin++;
					else shui++;
				}
				if(xin == n)
				{
					ok = 1;
					fen = i; break;
				}
				for (int j = 0; j < n; j++)//判断其能否意志坚定 
				{
					if(zhou[j]==a[j] && xin >= shui) zhou[j] = 0; 
				}
				
			}
		} 
		printf("Case %d: ",t);
		printf("%d\n",(ok)? fen: -1);
	}
	return 0;
} 
Publicado 55 artículos originales · ganado elogios 1 · vistas 2664

Supongo que te gusta

Origin blog.csdn.net/qq_37548017/article/details/99698664
Recomendado
Clasificación