1. 程式人生 > >螺旋列印數字矩陣

螺旋列印數字矩陣

#include<iostream.h>
void main()
{
	int n,i=0,j=0,k=1,q=1;
	int a[50][50]={0};
	cout<<"Input n<50"<<endl;
	cin>>n;
	while(1)
	{
		if(q==1)
		{	
			while(1)
			{
				a[i][j++]=k++;
				if(j>=n||a[i][j]!=0)
				{
					j--;
					k--;
					break;
				}
			}
			q++;
		}
	
		if(q==2)
		{
			while(1)
			{
				a[i++][j]=k++;
				if(i>=n||a[i][j]!=0)
				{
					i--;
					k--;
					break;
				}
			}
			q++;
		}
	
		if(q==3)
		{
			while(1)
			{
				a[i][j--]=k++;
				if(j<0||a[i][j]!=0)
				{
					j++;
					k--;
					break;
				}
			}
			q++;			
		}
	
		if(q==4)
		{
			while(1)
			{
				a[i--][j]=k++;
				if(i<0||a[i][j]!=0)
				{
					i++;
					k--;
					break;
				}
			}
			q=1;			
		}	
		if(k==n*n)
			break;	

	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{	

				cout<<a[i][j]<<"	";
		
		}
		cout<<endl;
	}
}

輸入數字2,則程式輸出:
1 2
4 3
輸入數字3,則程式輸出:
1 2 3
8 9 4
7 6 5
輸入數字4, 則程式輸出:
1  2   3   4
12  13  14  5
11  16  15  6
10   9  8   7

相關推薦

螺旋列印數字矩陣

#include<iostream.h> void main() { int n,i=0,j=0,k=1,q=1; int a[50][50]={0}; cout<<"I

1,2,3…n*n 的數字按照順時針螺旋的形式列印矩陣(遞迴)

題目:1,2,3…n*n 的數字按照順時針螺旋的形式列印成矩陣,如下: 輸入數字2,則程式輸出: 1 2 4 3 輸入數字3,則程式輸出: 1 2 3 8 9 4 7 6 5 輸入數字4, 則程式輸出

列印螺旋數字矩陣

1:如下,是一個“4×4”的數字矩陣,請找出其中的規律,然後編寫一個程式,要求能打印出“N×N”時的數字矩陣:  1     2      3    4 12   13   14   5 11   16   15   6 10     9     8    7 請用自己最熟

matlab 將數字矩陣轉換成圖像

之間 灰度 範圍 黑白 最好 沒有 imshow 原理 記錄 MATLAB中,常常使用imshow()函數來顯示圖像,而此時的圖像矩陣可能經過了某種運算。在matlab中,為了保證精度,經過了運算的圖像矩陣I其數據類型會從unit8型變成double型。如果直接運行imsh

蛇陣數字矩陣

max spa name eof -- while fin size sizeof #include<bits/stdc++.h> using namespace std; #define maxn 100 int a[maxn][maxn]; int main

ZZULIOJ.1108: 列印數字圖形(函式專題)

1108: 列印數字圖形(函式專題) 題目描述 從鍵盤輸入一個整數n(1≤n≤9),打印出指定的數字圖形。要求在程式中定義並呼叫如下函式:PrintSpace(m)用來輸出m個空格;PrintLine(m)來輸出一行中的數字串"12…m…21"(該行中的最大數字是m)。函式原型如下:

某比賽小記5- 螺旋遍歷矩陣

題目:給定一個二維矩陣,從[0][0]開始向右,按順時針遍歷全部資料,比如[[a,b][c,d]],遍歷順序就是a,b,d,c。最後將遍歷的元素用逗號連線,列印整個遍歷結果。給定二維矩陣見檔案。 題解:本題思路很容易設計,就是每次訪問越界或者是訪問到已經訪問的元素就向右轉向,當右邊沒有路了則結束。難點主要是

列印迴圈矩陣

1 #include <stdio.h> 2 3 int main() { 4 int r, l; //記錄行數rows和列數lines 5 printf("輸入行數和列數,以空格分隔:") 6 scanf("%d %d", &r, &

1108: 列印數字圖形(函式專題)

題目描述 從鍵盤輸入一個整數n(1≤n≤9),打印出指定的數字圖形。要求在程式中定義並呼叫如下函式:PrintSpace(m)用來輸出m個空格;PrintDigit(m)來輸出一行中的數字串"12...m...21"(該行中的最大數字是m)。函式原型如下:  void Print

從1到n 列印數字 (使用字串表示一個大數)

使用字串表示一個大數 題目:列印從1到n 的數 n是多大我們並不知道,有可能已經超出了計算機所能表示的最大的數,所以此時需要使用字串或陣列來表示一個任意大小的數,並對其進行列印,對於列印下面有兩種方法 使用加法模擬 void PrintNum(int N

面試題:常見的多執行緒實戰手撕程式碼(順序列印數字、字母)

問題一:   一個多執行緒的問題,用三個執行緒,順序列印字母A-Z,輸出結果是1A 2B 3C 1D 2E…列印完畢最後輸出一個Ok。 程式碼一: public class forCharacter { private static char c = 'A';

多執行緒交叉列印數字,執行緒切換,結果通知思想

一道面試題,兩個執行緒交叉列印奇偶數。 這裡會運用synchronized鎖機制,wait和notifyAll方法,當然也可以使用ReentrantLock,本質鎖競爭 僅線上程需要的時候持有鎖,其餘時間檢查自身執行緒鎖,釋放執行緒自己持有的鎖。 public clas

計蒜客列印鋸齒矩陣

1.問題描述: 2.演算法分析: 因為發現數組的長度不是固定的,而是可變的,所以我們不能使用靜態陣列,我們可以使用動態陣列vector來做。先確定使用的資料結構vector 然後就是先對陣列賦值

a,b,c三個執行緒按順序列印數字1-96 執行緒a列印1,b列印2,c列印3

程式的主入口 公共的物件鎖 列印方法的核心執行緒 具體的實現程式碼 PrintThread   public class PrintThread implements Runnable { private String name;//執行緒名稱

列印數字1-20,一個執行緒列印奇數,一個執行緒列印偶數

main.class public class Solution1006 { public static void main(String[] args) { MyObje

3個執行緒順序列印數字

問題:啟動3個執行緒A、B、C,使A列印0,然後B列印1,然後C列印2,A列印3,B列印4,C列印5,依次類推。思路:每個執行緒給定一個編號,每個執行緒判斷當前是否已經輪到自己列印:如果沒輪到,就wait等待;如果輪到,則列印當前數字,並喚醒其他執行緒。判斷是否已經輪到自己列

遞迴入門(十) ---- 列印數字(遞迴原理詳解)

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

Java n個執行緒輪流列印數字的問題

一. 實現兩個執行緒,輪流打印出數字,如下: bThread --> 10 aThread --> 9 bThread --> 8 aThread --> 7 bThread --> 6 aThread --> 5 bThread -

java多執行緒交替列印數字和字母

題目: 1.開啟兩個執行緒,一個執行緒列印A~Z,另一個執行緒列印1~52的資料。 2.實現交替列印,輸出結果為12A34B………..5152Z. 3.請用多執行緒方式實現。 使用阻塞佇列實現

多執行緒同步之事件 -- 2個執行緒交替列印數字

    有段時間沒有接觸多執行緒相關的知識了,難免會遺忘或者生疏。多執行緒通訊和同步相關的知識運用比較廣,而且比較常見。今天通過2個執行緒交替列印數字的例子,來整理下多執行緒序相關的程式設計方式。這裡2個執行緒直接通過一個event進行同步。     我們通過CreateE