複製與貼上

2021-06-20 20:35:03 字數 1358 閱讀 6347

我們用文字處理器來處理乙個特殊的文字檔案,該文字檔案共有n行文字,每一行文字僅包含乙個自然數,第一行為1、第二行為2,以此類推至n行為自然數n。

編寫乙個程式求出在進行了連續若干次「剪下和貼上」操作後,文字檔案中前十行的內容。

輸入檔案的第一行包含兩個用空格隔開的自然數n和k,n表示檔案的總行數(10≤n≤100,000),k表示「剪下和貼上」的總次數(1≤k≤1000)。

下面k行每一行包含一次「剪下和貼上」操作的執行資訊,每行包含三個用空格隔開自然數a,b和c,其中1≤a≤b≤n,0≤c≤n-(b-a+1)。a和b表示選定文字的第一行和最後一行,c表示被剪下下來的文字待插入處的前一行,如果c等於0則被剪下下來的的文字將被插入到檔案的開頭。

輸出檔案,將由十行組成,其中包含所有的操作都完成後的文字檔案中前十行所包含的數字。

13 3

6 12 1

2 9 0

10 13 8 6

7 89 10

11 12

2 34

模擬: 乙個複製陣列, 乙個被複製陣列, 引數較多, 明確每個引數的意義

情況1 a < c, 2 a >= c,

在經過a ~ b時, 要判斷

**:

#include#include#define n 100004

int file[2][n], n;

int a, b, c, ar1, ar2;//輸入的3個數, 以及copy array & be coppied array

void operator1(int a1, int b1);

void operator2(int a1, int b1);

int main()

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

else

operator2(ar1, ar2);

} for(i = 1; i <= 10; i++)

printf("%d\n", file[((k - 1) % 2 + 1)% 2][i]);

// system("pause");

return 0;

}void operator1(int a1, int b1)

if(count == c)

break;

} count = i + 1;

for(i = a; i <= b; i++)

for(i = count; i <= n; i++)

}void operator2(int a1, int b1)

count = c + 1;

for(i = a; i <= b; i++)

for(i = count; i <= n; i++)

}

避免複製與貼上

重構之美 之一 在我的程式設計生涯中,碰到類似copy paste的情況簡直不勝列舉。在一次專案中,我們對開源專案jasper report進行了擴充套件。我們加入了對新報表型別 cjt report 的支援。在reportparameteraction類中,我們需要對報表物件reportunit判...

避免複製與貼上

重構之美 之一 在我的程式設計生涯中,碰到類似copy paste的情況簡直不勝列舉。在一次專案中,我們對開源專案jasper report進行了擴充套件。我們加入了對新報表型別 cjt report 的支援。在reportparameteraction類中,我們需要對報表物件reportunit判...

貼上複製Android複製和貼上的實現

最近研究貼上複製,稍微總結一下,以後繼續補充 main.xml如下 mainactivity如下 每日一道理 漫漫人生路,誰都難免會遭遇各種失意或厄運。在淒風苦雨 慘霧愁雲的考驗面前,乙個強者,是不會向命運低頭的。風再冷,不會永遠不息 霧再濃,不會經久不散。風息霧散,仍是陽光燦爛。package c...