#40380: C(2ms, 84KB)/C++(2ms, 92KB)將C原始碼放C++,居然效率高占用空間少,以後都練C好了...


bobobo0413 (Andy)

學校 : 國立臺灣大學
編號 : 252359
來源 : [220.141.219.171]
最後登入時間 :
2024-11-21 23:06:25
m932. 2. 蜜蜂觀察 -- 2024年1月APCS | From: [223.140.92.164] | 發表日期 : 2024-05-16 09:33

解題思路: 我非常了解C++和PYTHON比較適合應試,我只是剛好發現C原始碼效率高占用空間少,考試當然還是要用套件配合多的來寫比較省時間。匯入函式庫

#include <stdio.h>#include <stdlib.h>, 開始位置在(m-1,0)。將方位寫清楚dr[6]={-1,0,1,1,0,-1}, dc[6]={0,1,1,0,-1,-1},要仔細檢查,避免沒寫好,以及邊界要設定if (nr>=0 && nr<m && nc>=0 && nc<n) 。使用陣列紀錄有出線的字母int cnt[128]={0};for ( i=0; i<k; i++) cnt[p[i]] = 1;。以下提供C原始碼,事實上直接放C++檢測也會過:
#include <stdio.h>
#include <stdlib.h>
int main() {
int m,n,k,i,d;
char b [21][21];
scanf("%d%d%d", &m, &n, &k);
for (i=0; i<m; i++) {
scanf("%s",b [i]);}
int r = m-1, c = 0, nr,nc;
int dr[6]={-1,0,1,1,0,-1}, dc[6]={0,1,1,0,-1,-1};
char p[101];
for (int i=0;i<k;i++) {
scanf("%d", &d);
nr = r+dr[d]; nc = c+dc[d];
if (nr>=0 && nr<m && nc>=0 && nc<n) {r = nr; c = nc;}
p[i] = b[r][c];}

p[k]='\0';

int cnt[128]={0};

for ( i=0; i<k; i++) cnt[p[i]] = 1;

int num = 0;

for ( i=0; i<128; i++)

num += cnt[i];

printf("%s\n%d\n",p, num);

return 0;

}

 
ZeroJudge Forum