NOIP 2014 螺旋矩陣(遞迴實現)
最近補了這個題,豁然開朗,當時我就不明白我為啥沒想到。
#include<bits/stdc++.h> using namespace std; int f(int n,int x,int y){ if(x!=1&&y!=1&&x!=n&&y!=n){ return f(n-2,x-1,y-1)+(n-1)*4; } else{ if(x==1)return y; if(y==n)return (n-1)+x; if(x==n)return 3*n-y-1; if(y==1)return 3*(n-1)+(n-x+1); } } int main() { int n,x,y; scanf("%d%d%d",&n,&x,&y); int ans=f(n,x,y); printf("%d\n",ans); return 0; }
相關推薦
NOIP 2014 螺旋矩陣(遞迴實現)
最近補了這個題,豁然開朗,當時我就不明白我為啥沒想到。#include<bits/stdc++.h> using namespace std; int f(int n,int x,int y){ if(x!=1&&y!=1&&
圖的遍歷(鄰接矩陣的非遞迴實現)
#include<iostream> #include<cstring> #include<queue> using namespace std; typedef char TypeData; #define MAXVEX 100 #d
資料結構練習之用棧來遞迴實現5的階乘#C語言實現
剛學資料結構,給大家分享一下今天學習資料結構的棧中的一個練習 也算是順便記錄一下學習過程 #include <stdio.h> typedef struct StackNode { int vn; //儲存n的值 int vf; //儲存fun(n)的值 int t
C語言經典演算法(九)——遞迴實現二分查詢的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現
C語言經典演算法(八)——遞迴實現斐波那契數列的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1
C語言經典演算法(七)——遞迴實現階乘演算法的兩種方法
今後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現階乘演算法N! 1、 遞迴實現n! <1> 題目描述:輸入n值,求解n的階乘 <2> 方法一:累乘法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現n! 1、 累乘法 #
二叉樹非遞迴實現
二叉樹非遞迴實現會比較難理解一點,不過只要理解了非遞迴的,那麼遞迴的就非常好理解了。接下來進行圖文詳解。 C程式碼下載 C++程式碼下載 java程式碼下載 ( 備用地址下載) 導航 1.建立二叉樹 2.前序遍歷二叉樹 3.中序遍歷二叉樹 4.後序遍歷二叉
二叉樹遞迴實現
二叉樹遞迴實現比較符合樹的特點,也較容易理解,程式碼也較為簡單。接下來進行圖文詳解。 C程式碼下載 C++程式碼下載 java程式碼下載 ( 備用地址下載) 導航 1.建立二叉樹 2.前序遍歷二叉樹 3.中序遍歷二叉樹 4.後序遍歷二叉樹 5.層次遍歷
遞迴實現逆轉連結串列
//遞迴實現逆轉連結串列 ListNode *reverseLink2(ListNode *head) { ListNode *newHead; if(head->next==NULL) return head; newHead=reverseLink2
python 迭代法和遞迴 實現斐波那契演算法
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21…. 由規律可知: f(n) = f(n-1)+f(n-2) 符合斐波那契數
python學習筆記(25) 堆疊和遞迴實現三級選單
menu = { '北京':{ '海淀':{ '五道口':{}, '上地':{}, '西三旗':{} }, '昌平':{}, '朝陽':{}, '東城':{} }
遞迴實現刪除某個資料夾下的所有檔案和目錄,包括刪除本身。
核心程式碼: /*** * 刪除指定資料夾下所有檔案 * * @param path  
LeetCode 926. 將字串翻轉到單調遞增 遞迴實現動態規劃 兩種解法
這個題做了一個多小時,考慮複雜了。 開始推動規沒有推出來,然後找到一個遞推關係:從左往右,如果是0,則不需要變動;如果是1,則有兩種選擇(1)將1變為0(2)將1後面的所有數字變為1,這兩種方法中的變動數字最小的方法就是最佳方法,然後依次遞推,很容易寫出遞迴程式。但是這裡面存
1050 螺旋矩陣(Vector實現二維陣列)
本題要求將給定的 N 個正整數按非遞增的順序,填入“螺旋矩陣”。所謂“螺旋矩陣”,是指從左上角第 1 個格子開始,按順時針螺旋方向填充。要求矩陣的規模為 m 行 n 列,滿足條件:m×n 等於 N;m≥n;且&nbs
使用遞迴實現進位制轉換
要求:十進位制轉八進位制 //其它進位制的話只需做下稍微的修改 #include <iostream> using namespace std; int fun(int x) { if(x<8) return x; return x%8+10*fun(x/8); }
二叉樹後序遍歷非遞迴實現(java)
後序遍歷:雙棧法,和層次遍歷(雙佇列)很相似,唯一區別在於層次遍歷用的 是佇列,後序遍歷用的是棧。 public static void posOrderUnRecur1(Node head){ System.out.print("PosOrder:"); if(head !=
leetcode 783. 二叉搜尋樹結點最小距離(遞迴和非遞迴實現java)
題目描述: 給定一個二叉搜尋樹的根結點 root, 返回樹中任意兩節點的差的最小值。 示例: 輸入: root = [4,2,6,1,3,null,null] 輸出: 1 解釋: 注意,root是樹結點物件(TreeNode object),而不是陣列。 給定的樹 [4,
python3 遞迴實現二分查詢, 區分邊界資訊, 複雜度O(log(n)), 大概能算到10^7規模資料
def binarySearch(arr, l, r, target): #[l,n] 前閉後閉範圍內查詢target #如果不在裡面 if (target < arr[l] or target > arr[r]): return -1
遞迴_CH0303_遞迴實現排列型列舉_遞迴演算法正確性證明範例
點此開啟題目頁面 先給出AC程式碼, 然後給出程式正確性的形式化證明. //CH0303_遞迴實現排列型列舉 #include <iostream> #include <cstdio> #include <vector> using namespace
遞迴_CH0302_遞迴實現組合型列舉_遞迴演算法正確性證明範例
點此開啟題目頁面 先給出AC程式碼, 然後給出程式正確性的形式化證明 //CH0302_遞迴實現組合型列舉 #include <iostream> #include <cstdio> #include <vector> using namespace