csp-m3-1 y 2

Secuencia de T1 Ruishen

El título que describe las matemáticas de Ruishen es siempre el mejor. Incluso el poderoso Cuco debe caer por debajo del nivel de matemáticas de Ruishen. Aunque Cuco está muy angustiado, no hay forma de que Cuco se lleve a Ruishen. Durante 5.1, todos salieron a jugar, y sólo Ruishen seguía estudiando incansablemente. Ruishen pensó en una secuencia cuya longitud es, es decir, el número total. Ruishen se hizo una pregunta: ¿cuántos segmentos hay en la secuencia? La definición de un segmento es una secuencia continua y la misma más larga de enteros.
Descripción de entrada. Ingresa un número entero n en la primera línea, que indica el número de números. La siguiente línea es un número entero separado por n espacios, lo que indica números diferentes.

Descripción de salida

Salida de una línea, cuántos segmentos hay en esta secuencia

Entrada de muestra

12
2 3 3 6 6 6 1 1 4 5 1

Salida de muestra

8

Composición de datos

Inserte la descripción de la imagen aquí

Código

#include<iostream>
using namespace std;
bool flag[40][40]={0};
int color[40][40];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>color[i][j];
	for(int i=0;i<n;i++)
	{
		int num=1;
		for(int j=1;j<m;j++)
		{
			if(color[i][j]==color[i][j-1])
			{
				num++;
			}
			else
			{
				if(num>=3)
				{
					for(int x=j-1;x>=j-num;x--)
						flag[i][x]=1;
				}
				num=1;
			}
		}
		if(num>=3)
		{
			for(int x=m-1;x>=m-num;x--)
				flag[i][x]=1;
		}
	}

	for(int j=0;j<m;j++)
	{
		int num=1;
		for(int i=1;i<n;i++)
		{
			if(color[i][j]==color[i-1][j])
			{
				num++;
			}
			else
			{
				if(num>=3)
				{
					for(int x=i-1;x>=i-num;x--)
						flag[x][j]=1;
				}
				num=1;
			}
		}
		if(num>=3)
		{
			for(int x=n-1;x>=n-num;x--)
				flag[x][j]=1;
		}
	}
	for(int i=0;i<n;i++)
	{
		int flag2=0; 
		for(int j=0;j<m;j++)
		{
			if(flag2==0)
				flag2=1;
			else
				cout<<' ';
			if(flag[i][j]==0)
				cout<<color[i][j];
			else
				cout<<"0";			
		}
		cout<<endl;		
	}

	return 0;
}

T2 Master of Elimination Music-Teacher Q

descripción

El profesor Q es un profesor muy honesto y recientemente se está preparando activamente para el examen de ingreso de posgrado. Al profesor Q generalmente solo le gusta usar el sistema Linux, por lo que no hay juegos de entretenimiento en la computadora del Sr. Q, así que además de jugar al juego de carreras SuperTuxKart en Linux, al Sr. Q le gusta jugar.
El juego se juega en un tablero de ajedrez con n filas y m columnas Cada cuadrícula en el tablero de ajedrez tiene una pieza de ajedrez de un color. Cuando hay tres o más piezas consecutivas del mismo color en una fila o columna, estas piezas se eliminan. Cuando existan múltiples lugares que puedan eliminarse, las piezas en estos lugares serán eliminadas al mismo tiempo.
Un peón puede ser eliminado en una determinada fila y en una determinada columna al mismo tiempo.
Dado que este juego es un sistema innovador y tiene un límite de tiempo, cuando el Sr. Q abre el siguiente nivel, los buenos amigos del Sr. Q le piden al Sr. Q que suba al Monte Tai. El Sr. Q no quiere perder en este nivel, por lo que acude a usted en busca de ayuda. ! !

Ingrese descripción

La primera línea de entrada contiene dos enteros n, m, que indican el número de filas y columnas. Las siguientes n filas ym columnas están separadas por espacios. Cada número representa el color de la pieza de ajedrez en esta posición. Todos los números son mayores que 0.

Descripción de salida

Salida n filas ym columnas, los números en cada fila están separados por espacios, y dan salida al tablero de ajedrez eliminado. (Si se elimina una pieza en un cuadrado, el cuadrado correspondiente saldrá 0; de lo contrario, se emitirá el número de color de la pieza).

Entrada de muestra 1

4 5
2 2 3 1 2
3 4 5 1 4
2 3 2 1 3
2 2 2 4 4

Salida de muestra 1

2 2 3 0 2
3 4 5 0 4
2 3 2 0 3
0 0 0 4 4

Entrada de muestra 2

4 5
2 2 3 1 2
3 1 1 1 1
2 3 2 1 3
2 2 3 3 3

Salida de muestra 2

2 2 3 0 2
3 0 0 0 0
2 3 2 0 3
2 2 0 0 0

Composición de puntos de datos

Inserte la descripción de la imagen aquí

Código

#include<iostream>
using namespace std;
bool flag[40][40]={
    
    0};
int color[40][40];
int main()
{
    
    
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>color[i][j];
	for(int i=0;i<n;i++)
	{
    
    
		int num=1;
		for(int j=1;j<m;j++)
		{
    
    
			if(color[i][j]==color[i][j-1])
			{
    
    
				num++;
			}
			else
			{
    
    
				if(num>=3)
				{
    
    
					for(int x=j-1;x>=j-num;x--)
						flag[i][x]=1;
				}
				num=1;
			}
		}
		if(num>=3)
		{
    
    
			for(int x=m-1;x>=m-num;x--)
				flag[i][x]=1;
		}
	}

	for(int j=0;j<m;j++)
	{
    
    
		int num=1;
		for(int i=1;i<n;i++)
		{
    
    
			if(color[i][j]==color[i-1][j])
			{
    
    
				num++;
			}
			else
			{
    
    
				if(num>=3)
				{
    
    
					for(int x=i-1;x>=i-num;x--)
						flag[x][j]=1;
				}
				num=1;
			}
		}
		if(num>=3)
		{
    
    
			for(int x=n-1;x>=n-num;x--)
				flag[x][j]=1;
		}
	}
	for(int i=0;i<n;i++)
	{
    
    
		int flag2=0; 
		for(int j=0;j<m;j++)
		{
    
    
			if(flag2==0)
				flag2=1;
			else
				cout<<' ';
			if(flag[i][j]==0)
				cout<<color[i][j];
			else
				cout<<"0";			
		}
		cout<<endl;		
	}

	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/alicemh/article/details/106093874
Recomendado
Clasificación