retour en forme de coupe Blue Bridge aux questions des exercices de base prennent quelques Python et c ++

Questions exercices d'accès de base arrière en forme

En soumettant cette question  

Les contraintes de ressources

Date limite: 1.0s mémoire Limite: 512.0MB

description du problème

  L'accès est en forme de méandre le long de l'accès latéral de la matrice, si la direction actuelle a de nombreux souhaitable ou décoller, puis 90 degrés à gauche. Un démarrage à gauche coin de la matrice, la direction vers le bas.

Format d'entrée

  La première ligne d'entrée est un nombre entier positif non supérieur à deux de 200 m, n, désigne la matrice de rangées et de colonnes. Ensuite, chaque rangée de m rangées de n est un nombre entier, désigne la matrice.

Format de sortie

  Seule la ligne de sortie, un nombre total de mn, pris comme un nombre méandres matrice d'entrée des résultats obtenus. Entre le nombre séparé par un espace, à la fin de la ligne n'ont pas d'espaces supplémentaires.

entrée d'échantillon

3 3
1 2 3
4 5 6
7 8 9

Exemple de sortie

1 4 7 8 9 6 3 2 5

entrée d'échantillon

3 2
1 2
3 4
5 6

Exemple de sortie

1 3 5 6 4 2

 

Python version

m, n = map(int, input().split())
a = []
ans = []
for _ in range(m):
    a.append(list(map(int, input().split())))
while a:
    # down
    for i in range(len(a)):
        ans += [a[i].pop(0)] if a[i] else []
    # right
    ans += a.pop() if a else []
    # top
    for i in range(len(a) - 1, -1, -1):
        ans += [a[i].pop()] if a[i] else []
    # left
    ans += a.pop(0)[::-1] if a else []
print(*ans)

c ++ version

#include <iostream>
#include <memory.h>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    int a[201][201];
    memset(a, -1, sizeof(a));
    int i = 0, j = 0;
    for(i = 0; i < m; i++)
        for(j = 0; j < n; j++)
            cin >> a[i][j];
    i = 0, j = 0;
    int total = 0;
    while(total < m * n) {
        while(i <= m-1 && a[i][j] != -1) {//down
            cout << a[i][j] << " ";
            a[i][j] = -1;
            i++;
            total++;
        }
        i--;
        j++;
        while(j <= n-1 && a[i][j] != -1) {//right
            cout << a[i][j] << " ";
            a[i][j] = -1;
            j++;
            total++;
        }
        j--;
        i--;
        while(i >= 0 && a[i][j] != -1) {//up
            cout << a[i][j] << " ";
            a[i][j] = -1;
            i--;
            total++;
        }
        i++;
        j--;
        while(j >= 0 && a[i][j] != -1) {//left
            cout << a[i][j] << " ";
            a[i][j] = -1;
            j--;
            total++;
        }
        j++;
        i++;
    } 
    return 0;
}

 

Publié 71 articles originaux · louange gagné 84 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43906799/article/details/104960616
conseillé
Classement