9月10日360筆試程式設計題

2021-07-22 15:55:18 字數 2431 閱讀 4625

最強大腦

題目描述:

把從n到m車站看到的旗幟顏色依次列出來,然後告訴你小b記得的旗幟顏色序列,判斷小b究竟是從n和m之間哪些方向才能看到所說顏色的旗幟。

可能的結果有:

forward

backward

both

invalid

輸入示例:

atobab

aaacaaa

acaaa

輸出示例:

forward

both

思路:這題實際上是乙個字串匹配,對於第乙個例子,如果a能在atob中找到,那再在atob的a之後去尋找b,如果b也找到了,那麼forward=true。

然後反向尋找,即在bota中找a和b,先找到a,然後再找b,但是在bota的a後面已經沒有東西了,所以backward=false。

對於第二個例子,如果aca能在aaacaaa中找到,那再在aca之後找aa,如果找到了,那麼forward=true

然後反向選擇,即在aaacaaa中尋找aca,然後找aa,也找到了,所以backward = true

由於forward=true and backward= true,所以輸出both

具體的程式也是乙個模擬的過程:

#include

#include

char a[100002];

char b[100002];

char c[100002];

int main()

if (b[j]=='\0') //如果b完全匹配完了,說明可以在a中找到b,flag1=true,繼續在字串a中找字串c

else j = 0;

}flag2 = 0;j = 0;

if (flag1)

if (c[j]=='\0') //如果c完全匹配完了,說明可以在a中找到c,flag2=true

else j = 0;}}

if (flag1&&flag2) forward = 1;//如果flag1=true和flag2=true,說明兩個字串b和c都可以在a中找到,所以forward=true

i = n-1;j = 0; flag1 = 0;//判斷反向的情況

while (i>0) 

if (b[j]=='\0') //如果b完全匹配完了,說明可以在a中找到b,flag1=true,繼續在字串a中找字串c

else j = 0;

}flag2 = 0;j = 0;

if (flag1)

if (c[j]=='\0')          //如果c完全匹配完了,說明可以在a中找到c,flag2=true,說明forward=true

else j = 0;}}

if (flag1&&flag2) backward = 1;             //如果flag1=true和flag2=true,說明兩個字串b和c都可以在a中找到,所以backward=true

if (forward&&backward) printf("both\n");//根據forward和backward的情況,一共有四種輸出

else if (forward) printf("forward\n");

else if (backward) printf("backward\n");

else printf("invalid\n");}}

記憶體管理

有三種對記憶體的操作:

new size:分配size大小的記憶體塊,返回該記憶體塊的控制代碼(即編號

del handle:釋放控制代碼handle指向的記憶體塊

思路:用乙個block陣列記錄已經申請的記憶體的起始位址和長度,開了乙個mem陣列標記已經分配的和沒有分配的記憶體。

new操作的時候,增加block陣列,記錄起始位置和block的長度,然後將mem的對應位置由0改為1.

del操作,將對應的block陣列起始位置置為-1,長度置為0,然後將mem的對應位置由1改為0.

def操作,這個操作我的思路有點不清晰,寫得有點久,

我最開始的想法是把block按照起始位址排序,然後組合起來,但是問題是block的下標是有用的,刪除的時候會用到,所以排序的時候不能交換block的下標。最後使用的方式是掃瞄mem陣列,然後找到第乙個為1的位址,掃瞄這個是第幾個block,然後把這個block前移。

具體**:

#include

#include

struct block;

//記錄每個記憶體塊的起始位址和長度

int main() }

if (!flag) printf("null\n"); //如果記憶體分配失敗,輸出null

}if (strcmp("del",command)==0)

}if (strcmp("def",command)==0) }}

}}

筆試程式設計題彙總 9

0代表黑棋,1代表白棋,找出被白棋包圍的黑棋並吃掉,返回吃掉之後的結果 import sys from copy import deepcopy 4 1101 1011 1001 1111 6101001 110100 111011 010101 111111 010100 41111 0101 1...

筆試程式設計題 2012 3 22筆試

乙個筆試題目 n個人圍成乙個圈,第乙個人從1開始遞增報數,凡是報到3的倍數 包括3 時,該人退出,隨後的人接著再繼續報數,直到最後只剩下乙個人為止,求最後剩下的這個人在原對中的編號。思路 用陣列儲存n個人,開始陣列元素全部初始化為1,表示所有的人都在隊中,然後迴圈遍歷陣列,凡是遇到能整除3的位置的元...

小公尺2015筆試程式設計題

1.程式設計題 懂二進位制 時間限制 1秒 空間限制 32768k 世界上有10種人,一種懂二進位制,一種不懂。那麼你知道兩個int32整數m和n的二進位制表達,有多少個位 bit 不同麼?輸入例子1 1999 2299 輸出例子1 分析 第一步求這兩個數的異或,得到乙個新的數,相同位是0,不同位是...