回形取數 (注意自己定義的變數是從幾開始的)
問題
/*基礎練習 回形取數
時間限制:1.0s 記憶體限制:512.0MB
關鍵字:二維陣列 迴圈
問題描述
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。
輸入格式
輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。
輸出格式
輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用一個空格分隔,行末不要有多餘的空格。
樣例輸入
3 3
1 2 3
4 5 6
7 8 9
樣例輸出
1 4 7 8 9 6 3 2 5
樣例輸入
3 2
1 2
3 4
5 6
樣例輸出
1 3 5 6 4 2
*/
程式碼
答案
#include <stdio.h>
#include <string.h>
#define MAX_N 200
int m,n;
int a[MAX_N][MAX_N],b[MAX_N][MAX_N];
int s=0;
void solve(int i,int j)
{
if(i<m && i>=0 && j<n && j>=0 && b[i][j] == 0)
{
printf("%d ",a[i][j]);
b[i][j] = 1;
}
else
{
s++;
return ;
}
if(s%4 == 0)
solve(i+1,j);
if(s%4 == 1)
solve(i,j+1);
if(s%4 == 2)
solve(i-1,j);
if(s%4 == 3)
solve(i,j-1);
return ;
}
int main()
{
memset(b,0,sizeof(b));
scanf("%d%d",&m,&n);
int i,j;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
solve(0,0);
puts("");
return 0;
}
自我改正
#include<stdio.h>
#include<string.h>
#define maxm 200
#define maxn 200
int a[maxm][maxn];
int b[maxm][maxn];
int m,n;//生命的是全域性變數
int s=0;
void sort(int i,int j)
{
if(i>=1&&i<=m&&j>=1&&j<=n&&b[i][j]==0)
{
printf("%d ",a[i][j]);
b[i][j]=1;
}
else
{
s++;
return ;
}
if(s%4==0)
sort(i+1,j);//已經是遞迴了,不需要有迴圈
if(s%4==1)
sort(i,j+1);
if(s%4==2)
sort(i-1,j);
if(s%4==3)
sort(i,j-1);
return ;
}
int main()
{
int i,j;
memset(b,0,sizeof(b));
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
}
sort(1,1);//注意這是從1開始的
puts("");
return 0;
}
相關文章
- JavaScript中是如何定義私有變數的JavaScript變數
- 注意,ruby迴圈體定義的變數在結束時後,變數還存在變數
- 變數的定義和使用變數
- Linux架構27 Ansible變數, 定義變數的方式, 變數註冊, facts快取Linux架構變數快取
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- 【C++注意事項】2 變數宣告和定義C++變數
- PHP核心定義變數的方式PHP變數
- 預定義的SQL*Plus變數SQL變數
- grafana如何使用定義的變數Grafana變數
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- javascript獲取函式定義的引數個數JavaScript函式
- 變數定義錯誤變數
- 01.變數定義變數
- C++教程-----C++變數型別和變數的定義C++變數型別
- angular中定義全域性變數及全域性變數的使用Angular變數
- C/C++定義全域性變數/常量幾種方法的區別C++變數
- Python定義全域性變數的用法Python變數
- lua語法-變數的定義與使用變數
- Linux下變數的定義及引用Linux變數
- Android.mk內的變數定義Android變數
- MySQL 透過set global設定變數的注意點MySql變數
- 改變自己從學習linux開始Linux
- [C++]變數宣告與定義的規則C++變數
- Android全域性變數的定義與使用Android變數
- 如何刪除使用export定義過的變數?Export變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- c 語言中巨集定義和定義全域性變數的區別變數
- c+++變數宣告和定義C++變數
- nginx內建預定義變數Nginx變數
- sqlplus中define定義的常量和variable定義的變數的區別!SQL變數
- MAC 設定環境變數path的幾種方法Mac變數
- 設計模式的數學定義是什麼?設計模式
- javascript全域性變數的使用注意JavaScript變數
- Oracle變數定義的三種方式(define,variable,declare)Oracle變數
- 你還在用var定義變數嗎?變數
- maven中properties標籤定義變數Maven變數
- C# WebForm定義全域性變數C#WebORM變數
- js_獲取與設定css變數的值JSCSS變數