時間限制:1.0s 記憶體限制:512.0mb
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。
輸入格式
輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。
輸出格式
輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用乙個空格分隔,行末不要有多餘的空格。
3 31 2 3
4 5 6
7 8 9
1 4 7 8 9 6 3 2 5
3 21 2
3 45 6
1 3 5 6 4 2
#include
#include
int a[
201]
[201];
using namespace std;
intmain()
} cin>>n>>m;
for(
int i=
1;i<=n;i++)}
int i=
0,j=1;
while
(true)
//向右走
while
(a[i]
[j+1]!=
-1)//向上走
while
(a[i-1]
[j]!=-1
)//向左走
while
(a[i]
[j-1]!=
-1)if
(flag==0)
break
;else flag=0;
}return0;
}
列舉法一般比較直觀,容易理解,但是要檢查所有的可能的解,執行效率較低。
列舉法的結構:列舉範圍迴圈+條件判斷語句
時間限制:500ms 記憶體限制:256.0mb
給定n個棍子的長度和整數k,求能否在其中選出2k個棍子拼成兩個凸多邊形。使得兩個凸多邊形都恰好有k跟棍子組成,且任意相鄰的邊都不共線。
第一行包括兩個正整數n,k,表示棍子總數和多邊形邊數。
第二行包括n個正整數,表示每根棍子的長度。
第一行輸出乙個單詞yes或者no表示是否能選出滿足要求的2k個棍子。
如果第一行輸出的是yes,則第二行要輸出方案。輸入的棍子從1開始按照輸入順序編號,你需要輸出2k個空格隔開的正整數,前k個表示組成第乙個凸多邊形的棍子的編號,後k個表示組成第二個凸多邊形棍子的編號。
如果有多種方案,輸出任意一種即可。
input 1:
6 31 1 1 2 2 2
input 2:
6 31 2 3 100 200 300
output 1:
yes1 2 3 4 5 6
output 2:
no2k ≤ n ≤ 1000
3 ≤ k ≤ 10
1 ≤ length of each stick ≤ 10^9
#include
#include
using namespace std;
const
int n=
1005
;struct edge
edge[n]
;bool cmp
(edge e1,edge e2)
long
long sum[n]
;int visit[n]
,visit1[n]
;int n,k;
void
dfs(
int a,
int b,
long
long c,
long
long d,
int a1,
int a2,
int b1,
int b2)
for(
int i=b-
2*k+
1;i<=b;i++
)exit(0
);}if
(a1!=k)
if(a2!=k)
}int
main()
sort
(edge+
1,edge+n+
1,cmp)
;for
(int i=
1;i<=n;i++
)for
(int i=k;i<=n;i++)}
}for
(int i=
2*k;i<=n;i++
)dfs
(i-2
*k+1
,i,0,0
,0,0
,0,0
);cout<<
"no"
}
藍橋杯練習
k好數 問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 ...
藍橋杯練習
題目完成時間2021年3月16日 題目 計算機真是最傻的東西 他都不能計算大於10 65 1的a b,請你幫這個 最傻 的東西過關,否則它就真的只認識1和0了。輸入格式 共兩行 第一行輸入乙個整數a 第一行輸入乙個整數b。輸出格式 共一行,乙個表示a b的整數。樣例輸入 2147483647 214...
2 25 演算法練習
時間限制 1.0s 記憶體限制 512.0mb 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位...