Récemment, les sites de programmation d'apprentissage / de compétition suivants sont devenus populaires.
C'est pourquoi j'ai essayé un peu, donc je vais faire un mémorandum et noter ce que j'ai recherché et étudié.
Traitement pour stocker chaque ligne d'entrée dans un tableau comme indiqué ci-dessous.
123 => arr[0][0]、arr[0][1]、arr[0][2]
456 => arr[1][0]、arr[1][1]、arr[1][2]
789 => arr[2][0]、arr[2][1]、arr[2][2]
Si vous pouvez faire cela, vous pouvez faire différentes choses en utilisant ce tableau.
#include <stdio.h>
#include <string.h>
#define MAX_ROW 1000
#define MAX_COL 1000
static int g_map[MAX_ROW][MAX_COL];
int main(int argc, char** argv){
int count1, count2, len;
char input_string[MAX_ROW];
/*Première entrée standard*/
scanf("%s", input_string);
len = strlen(input_string);
for(count1 = 0; count1 < len; count1++){
/*À partir de la deuxième fois, effectuez une saisie standard ici*/
if(count1 > 0){
scanf("%s", input_string);
}
for(count2 = 0; count2 < len; count2++){
/*À partir de lettres ASCII"0"(0x30)Vous pouvez obtenir la valeur en soustrayant.*/
g_map[count1][count2] = input_string[count2] - '0';
}
}
/*afficher*/
for(count1 = 0; count1 < len; count1++){
for(count2 = 0; count2 < len; count2++){
printf("%d", g_map[count1][count2]);
}
printf("\n");
}
return 0;
}
Lors de l'utilisation d'un tableau dynamique Est-ce que celui-ci est plus polyvalent?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INPUT_STRING_LEN 1000
int **g_map;
int main(int argc, char** argv){
int count1, count2, len;
char input_string[INPUT_STRING_LEN];
/*Première entrée standard*/
scanf("%s", input_string);
len = strlen(input_string);
/*Allocation dynamique des baies*/
g_map = malloc(sizeof(int *) * len);
for (int i = 0; i < len; i++) {
g_map[i] = malloc(sizeof(int) * len);
}
for(count1 = 0; count1 < len; count1++){
/*À partir de la deuxième fois, effectuez une saisie standard ici*/
if(count1 > 0){
scanf("%s", input_string);
}
for(count2 = 0; count2 < len; count2++){
/*À partir de lettres ASCII"0"(0x30)Vous pouvez obtenir la valeur en soustrayant.*/
g_map[count1][count2] = input_string[count2] - '0';
}
}
/*afficher*/
for(count1 = 0; count1 < len; count1++){
for(count2 = 0; count2 < len; count2++){
printf("%d", g_map[count1][count2]);
}
printf("\n");
}
/*Processus d'ouverture*/
for (int i = 0; i < len; i++) {
free(g_map[i]);
}
free(g_map);
return 0;
}
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(int argc, char** argv){
string input_string;
const char* c_string;
int length, count1, count2;
vector< vector<int> > arr;
cin >> input_string;
length = input_string.size();
/*Redimensionner dynamiquement à l'aide de la fonction de redimensionnement*/
arr.resize(length);
for(count1 = 0; count1 < length; count1++){
arr[count1].resize(length);
}
for(count1 = 0; count1 < length; count1++){
if(count1 > 0){
cin >> input_string;
}
for(count2 = 0; count2 < length; count2++){
c_string = input_string.c_str();
arr[count1][count2] = c_string[count2] - '0';
}
}
for(count1 = 0; count1 < length; count1++){
for(count2 = 0; count2 < length; count2++){
cout << arr[count1][count2];
}
cout << endl;
}
//Cela n'est pas nécessaire car le processus de suppression est effectué dans le destructeur.
return 0;
}
if __name__=="__main__":
input_string = input()
length = len(input_string)
map_data = [[0 for i in range(length)] for j in range(length)]
for count1 in range(0, length):
if count1 > 0:
input_string = input()
for count2 in range(0, length):
map_data[count1][count2] = int(input_string[count2])
#afficher
for count1 in range(0, length):
for count2 in range(0, length):
print(map_data[count1][count2], end='')
print("")
(defun main ()
(let (count1
count2
input-string
str-length
map-data)
(setf input-string (read-line))
(setf str-length (length input-string))
(setf map-data (make-array `(,str-length ,str-length)))
(dotimes (count1 str-length)
(setf count2 0)
(if (> count1 0)
(setf input-string (read-line)))
(loop :for char :across input-string
:do (setf (aref map-data count1 count2) (digit-char-p char))
(incf count2)))
;;afficher
(dotimes (count1 str-length)
(dotimes (count2 str-length)
(format t "~d" (aref map-data count1 count2)))
(format t "~%"))))
import java.util.*;
class Main{
/*Déclaration constante*/
public static final int MAX_ROW = 1000;
public static final int MAX_COL = 1000;
/*Fonction principale*/
public static void main(String[]args){
int question[][] = new int[MAX_ROW][MAX_COL];
int count1, count2, len;
String input_string;
Scanner cin = new Scanner(System.in);
input_string = cin.nextLine();
len = input_string.length();
for(count1 = 0; count1 < len; count1++){
if(count1 > 0){
input_string = cin.nextLine();
}
for(count2 = 0; count2 < len; count2++){
question[count1][count2] = input_string.charAt(count2) - '0';
}
}
/*afficher*/
for(count1 = 0; count1 < len; count1++){
for(count2 = 0; count2 < len; count2++){
System.out.print(question[count1][count2]);
}
System.out.println("");
}
}
}
using System.IO;
using System;
class Program
{
/*Définition constante*/
public const int MAX_ROW = 1000;
public const int MAX_COL = 1000;
/*Fonction principale*/
static void Main()
{
int[,] question = new int[MAX_ROW, MAX_COL];
int count1, count2, len;
String input_string;
input_string = Console.ReadLine();
len = input_string.Length;
for(count1 = 0; count1 < len; count1++){
if(count1 > 0){
input_string = Console.ReadLine();
}
for(count2 = 0; count2 < len; count2++){
question[count1, count2] = input_string[count2] - '0';
}
}
/*afficher*/
for(count1 = 0; count1 < len; count1++){
for(count2 = 0; count2 < len; count2++){
Console.Write(question[count1, count2]);
}
Console.WriteLine("");
}
}
}
if __FILE__ == $0
input_string = gets.chomp
length = input_string.length - 1
map_data = Array.new
(0..length).each do |count1|
if count1 > 0 then
input_string = gets.chomp
end
map_data << input_string.split("").map(&:to_i)
end
#afficher
(0..length).each do |count1|
(0..length).each do |count2|
print map_data[count1][count2]
end
puts ""
end
end
J'ai écrit un programme dans 5 langages différents (langage C, Python3, CommonLisp, Java, C #). (Je pense qu'il y a une meilleure façon de l'écrire ...) Il s'agit d'un programme préparatoire pour préparer les données avant d'écrire l'algorithme. En fait, nous allons résoudre le problème en utilisant les données stockées dans le tableau à partir d'ici. Cette fois, c'était un tableau, mais il existe diverses autres structures de données telles que des listes, des files d'attente, des piles et des hachages, donc ce serait bien si vous pouviez en sélectionner une en fonction de votre problème.
Recommended Posts