目錄
題目:
題目描述:
題目鏈接:
思路:
思路詳解:
代碼:
代碼詳解:
題目:
題目描述:
題目鏈接:
蛇形填數 - 藍橋云課
思路:
思路詳解:
看圖找規律,容易發現,數字按照:向右一步->向左下直到邊界->向下一步->向右上直到邊界。用二維數組表示點的坐標,用i表示第i行,用j表示第j列。走一步的直接寫即可(i++表示向下一步,j++表示向右一步),走到邊界的用while加上判斷邊界的條件即可
注意判斷邊界還存在規律,草稿紙找到的規律:找第n行n列,i,j需要遍歷到2*n-1,找a[20][20]即找第20行20列,i,j需要遍歷到39,如果i,j設的數<39輸出結果為0,草稿紙如下圖所示:
代碼:
代碼詳解:
#include<bits/stdc++.h> //填空題,答案是761
using namespace std; //容易發現,數字按照:向右一步->向左下直到邊界->向下一步->向右上直到邊界 //走一步的直接寫即可,走到邊界的用while加上判斷邊界的條件即可
int a[1000][1000]; //多開一點,防止數組越界 int main()
{a[1][1]=1;int temp=1;for(int i=1,j=1;i<=40&&j<=40;) //由草稿紙找到的規律:找第n行n列,i,j需要遍歷到2*n-1,找a[20][20] { //即找第20行20列,i,j需要遍歷到39,如果i,j設的數<39輸出結果為0 j++; //表示向右一步 temp++;a[i][j]=temp;while(j!=1) //向左下直到邊界,邊界的條件就是走到第一列,即j==1 {i++;j--;temp++;a[i][j]=temp;}i++; //表示向下一步 temp++;a[i][j]=temp;while(i!=1) //向右上直到邊界,邊界的條件就是走到第一行,即i==1 {i--;j++;temp++;a[i][j]=temp;}}cout<<a[20][20]<<endl;return 0;
}