[] Estructura de datos y estudio algoritmo de notas - "notas" algoritmo -5

CIN / cout

  • Uso CIN / cout necesidad de agregar el archivo de cabecera y #include using namespace std;
  • Leer múltiples variables simultáneamente:cin>>n>>db>>c>>str;
  • Leer una fila entera (función getline):
char str[100];
cin.getline(str, 100)
  • Si el contenedor es una cadena, la entrada requerida en la siguiente forma:
	string str;
	getline(cin, str);
  • Para cout, la envoltura de dos maneras: "\ n" o el uso endl;
  • Si desea controlar la exactitud del tipo doble, es necesario agregar #include<iomanip>el archivo de cabecera
    ejemplo de salida:cout << setiosflags(ios::fixed) << setprecision << 123.4567 << endl;

Comparación de punto flotante

  • número de coma flotante almacenado en el ordenador no siempre son exactos, es necesario introducir un número mínimo de eps tal error se puede corregir;
	const double eps = 1e-8;
  • Igualdad operador
    #define Equ(a,b) (((fabs)((a)-(b)))<(eps))
    Ej
#include <cstdio>
#include <cstring>
#include<cmath>
const double eps = 1e-45;
#define Equ(a,b) (((fabs)((a)-(b)))<(eps))

int main() 
{ 
	double db = 1.23;
	for (int i = 1; i <= 20; i++)
	{
		if (Equ(db, 1.23))	printf("true");
		else	printf("false");
	}
	return 0;
}

Si escrita db == 1,23 ningún problema en este caso simple, si un error de cálculo es grande, la pérdida de precisión no puede ser ignorada.

  • Mayor que el operador
#define More(a,b) (((a)-(b))>(eps))
  • Menos de operador
#define Less(a,b) (((a)-(b))<(-eps))
  • Mayor o igual que el operador
#define MoreEqu(a,b) (((a)-(b))>(-eps))
  • Menor o igual a operador
#define Less(a,b) (((a)-(b))<(eps))
  • pi pi
const double Pi = acos(-1.0);

complejidad

  • Generalmente dividido en tiempo complejidad, complejidad espacial, la complejidad de codificación

  • complejidad Tiempo de O (n): número de veces en las que la necesidad de realizar las operaciones básicas de nivel algoritmo de
    O (n) y (2n) O son equivalentes: el consumo aumenta con el tiempo n linealmente aumentan el tamaño de
    un alto nivel de potencia de sobrescribe el poder bajo nivel de O (con 3N 2 + + n-2) = O (con 3N 2 ) = O (n- 2 )
    claramente O (con 3N 2 + + n-2) tenderá a O (CN 2 ), que se refiere como C constante complejidad de tiempo
    así como diversos complejidad de tiempo, tal como look-media la complejidad de tiempo es O (log n), representa el número de complejidad de tiempo; complejidad constante de O (1) algoritmo que consume tiempo se expresa no con el crecimiento del tamaño y el crecimiento.
    O (. 1) <O (logN) <O (n-) <O (n- 2 )

  • complejidad espacial y complejidad de tiempo usando la misma formulación que indica la máxima necesidad algoritmo espacio de datos para consumir
    Por ejemplo, para un algoritmo, si consumen espacio máximo de datos es una matriz de dos dimensiones, a continuación, la complejidad espacial del algoritmo es O (n- 2 ). Dado que el espacio es generalmente suficiente para el uso, el espacio de políticas de modo común por el tiempo, tal como hashing;

  • la complejidad de codificación es un concepto cualitativo, no hay criterios cuantitativos, larga enorme cantidad de pensamiento hace que el algoritmo de código

Tres métodos de entrada comunes

  • tiempo ... EOF tipo
    no se le da sujeto a una condición de terminación (de entrada todos los datos que se hayan agotado)
    devuelve la función Scanf el valor del parámetro que es el número de éxito leer,
    consola de entrada normal generalmente no es a prueba, de sólo lectura alcanzado el final del archivo debido a tomar cuando un archivo no puede ser fenómeno de lectura, producirá un fallo de lectura, esta vez devuelve la función scanf -1, y el uso EOF lenguaje C (es decir, el final del fichero) para representar 1;
    por lo tanto, cuando el tema no especificó la cantidad de necesidades de datos que se deben leer, se puede utilizar el valor de retorno de EOF scanf para determinar si se ha completado la entrada.
	while (scanf("%d", &n) != EOF)
	{
		...
	}
	//只要scanf的返回值不为EOF(文件中的数据没有读完),就反复读入n;
	//当读入失败时(达到文件末尾),结束while循环。

Además, cuando los datos de entrada en la consola, y no el estado EOF gatillo, si quieres EOF gatillo manualmente en la consola, pulse <Ctrl + Z> combinación de teclas, pulse <Intro> mientras que puede terminar
si se trata de cadena de la lectura, hay dos maneras scanf y obtiene

	while (scanf("%s", str) != EOF)
	{
		...
	}
	while (gets(str) != NULL)
	{
		...
	}
  • ROTURA ... tipo mientras
    sujeta a parada cuando los satisface de datos de entrada una entrada de estado
    de este escrito, hay dos tipos:
    uno se encuentra dentro del juicio del EOF tiempo ..., condición de salida se satisface cuando la interrupción (PAUSA), mientras que la corriente de bucle;
    otra formulación es más compacto, la condición de salida en el estado mientras determina colocado, y se dejó scanf separados por comas, tal como
while (scanf("%d%d", &a, &b), a || b)
{
	...
}
  • while (T-) Tipo
    En este tipo, el sujeto se le dará el número de conjuntos de datos de prueba antes de un número correspondiente de los datos de entrada dados número de grupos. Dado que el número de conjuntos de datos de prueba dadas, es necesario almacenar T con una variable. Después de leer T, T ciclos realizaron, cada ciclo para resolver un conjunto de entrada y salida de datoswhile (T--) {...}

Tres tipos comunes de salida

  • salida normal
  • Son cada uno de salidas adicionales una línea en blanco
  • Una línea en blanco (rejilla) entre dos conjuntos de datos de salida, no hay ninguna fila vacía (rejilla) detrás del último conjunto de datos
  • En la prueba de múltiples puntos, cada ciclo debe ser de reposición sobre variables y matrices, o en el estado viene siguiente conjunto de variables de datos y matrices no es el estado inicial; uso general función memset para restablecer la función de matriz o de relleno.

Ejercicio
A + B O I Ejercicio

Título Descripción
Su tarea consiste en calcular a + b. Está especialmente diseñado para principiantes título acm. Usted debe encontrar otros temas similares con el título de la solución del problema, también se proporcionan estos problemas específicamente para los principiantes.

La entrada consiste en una serie de a y b pares, separados por espacios. Un par de A y B por línea.

Salida Para cada par de entrada y una B, es necesario activar la salida de A, B y.

Como la entrada y un segundo par b, y la salida del mismo debería estar en la segunda fila.

#include <cstdio>
#include <cstring>
#include<cmath>

int main() 
{ 
	int a, b;
	while (scanf("%d %d", &a, &b) != EOF)
	{
		printf("%d\n", a + b);
	}
	return 0;
}

A + B O Workshop II

Título Descripción
Su tarea consiste en calcular a + b.

La primera línea de entrada es un número entero N, las filas yn tienen una parte posterior y B, separados por espacios.

Para cada par de salidas de la entrada y a b, es necesario dar salida a una correspondiente fila, b y. Como un segundo par y b, y también la línea de salida de segundos correspondiente.

#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include<cmath>

int main() 
{ 
	int a, b, N;
	scanf("%d", &N);
	while (N--)
	{
		scanf("%d %d", &a, &b);
		printf("%d\n", a + b);
	}
	return 0;
}

A + B O práctica III

Título Descripción
Su tarea consiste en calcular a + b.

Cada línea de entrada es un par de a y b. En el que habrá un par de 0 y 0 marca el final de la entrada, y para hacer este cálculo.

Para cada par de salidas de la entrada y a b, es necesario dar salida a una correspondiente fila, b y. Como un segundo par y b, y son también de salida en una segunda fila.

	#include <cstdio>
	#include <cstring>
	#include<cmath>

	int main() 
	{ 
		int a, b;
		while (scanf("%d %d", &a, &b),a||b)
		{
			printf("%d\n", a + b);
		}
		return 0;
	}

A + B O práctica IV

Título Descripción
Su tarea consiste en calcular el número de enteros.

El primer número de cada línea de entrada de N, el número detrás de Banco tiene N.

Si n = 0, representa el extremo de entrada de la línea y no calculado.

Y la salida requerida para cada fila de datos en la línea de salida correspondiente.

	#include <cstdio>
	#include <cstring>
	#include<cmath>

	int main() 
	{ 
		int N;
		while (scanf("%d", &N),N)
		{
			int a,sum=0;
			while (N--)
			{
				scanf("%d", &a);
				sum += a;
			}
			printf("%d\n", sum);
		}
		return 0;
	}

la práctica A + B O V

Título Descripción Su tarea consiste en calcular el número de enteros.

La primera línea de entrada es un número positivo N, los N filas detrás. El primer número de cada línea es M, M representa el número del banco trasero también.

Y la salida requerida para cada fila de datos en la línea de salida correspondiente.

	#include <cstdio>
	#include <cstring>
	#include<cmath>

	int main() 
	{ 
		int N,M;
		scanf("%d", &N);
		while (scanf("%d", &M),N--)
		{
			int a, sum = 0;
			while (M--)
			{
				scanf("%d", &a);
				sum += a;
			}
			printf("%d\n", sum);
			if (N == 0) break;
		}
		return 0;
	}

A + B O práctica VI

Título Descripción
Su tarea consiste en calcular el número de enteros.

El primer número de cada línea de entrada de N, el número detrás de Banco tiene N.

Y la salida requerida para cada fila de datos en la línea de salida correspondiente.

#include <cstdio>
	#include <cstring>
	#include<cmath>

	int main() 
	{ 
		int N;
		while (scanf("%d", &N)!=EOF)
		{
			int a, sum = 0;
			while (N--)
			{
				scanf("%d", &a);
				sum += a;
			}
			printf("%d\n", sum);
		}
		return 0;
	}

A + B O Ejercicio VII

Título Descripción
Su tarea es calcular la suma de dos números enteros.
Comprende una pluralidad de líneas de entrada, cada entrada dos enteros A y B, separados por un espacio.
Para cada entrada, una salida y a y b, cada línea conectada a la salida de una línea en blanco.

	#include <cstdio>
	#include <cstring>
	#include<cmath>

	int main() 
	{ 
		int a,b;
		while (scanf("%d %d", &a,&b)!=EOF)
		{
			printf("%d\n\n", a+b);
		}
		return 0;
	}

A + B O práctica VIII

Título Descripción Su tarea consiste en calcular el número de enteros. La primera entrada de línea a un número entero N, las siguientes N líneas de M para entrar en un entero, números enteros M e introduzca en la misma fila.

Para cada entrada, salida, y entre, la salida de cada número de salida M una línea en blanco.

#include <cstdio>
#include <cstring>
#include<cmath>

int main()
{
	int N, M;
	scanf("%d", &N);
	while (scanf("%d", &M), N--)
	{
		int a, sum = 0;
		while (M--)
		{
			scanf("%d", &a);
			sum += a;
		}
		printf("%d\n\n", sum);
		if (N == 0) break;
	}
	return 0;
}
Publicado 43 artículos originales · ganado elogios 4 · Vistas 1222

Supongo que te gusta

Origin blog.csdn.net/weixin_42176221/article/details/99753519
Recomendado
Clasificación