programming practice - seoul national...
TRANSCRIPT
![Page 1: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/1.jpg)
Programming Practice2018-10-25
Week 8
1
![Page 2: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/2.jpg)
Practice Lecture
2
![Page 3: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/3.jpg)
Integer Overflow
• When producing the 'sum', 'total amount', 'a big number', etc,calculate the maximum possible upper bound first.
• If it is greater than (about) 𝟐 ∗ 𝟏𝟎𝟗 => IntegerOverflow will occur.
3
![Page 4: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/4.jpg)
Integer Overflow
• IntegerOverflow is not an error. (The code will compile normally.)
• You must prevent it yourself.
Use long long type variable (for the sum/total/etc.)
Print with the format "%lld" within printf() function.
4
![Page 5: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/5.jpg)
Array declaration
5
• This is not the correct way:
![Page 6: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/6.jpg)
Array declaration
6
• This is not the correct way:
Why?
- scanf() is done at run-time
but
- Array memory allocationis done at compile-time
![Page 7: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/7.jpg)
Array declaration
7
The standard way:
![Page 8: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/8.jpg)
Array declaration
• But.. some c compilers have changed to allow both.
• Depends on the compiler you're using.(May be best to do it the standard way.)
8
![Page 9: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/9.jpg)
Array declaration
• OR use malloc/calloc (dynamic memory allocation)
Memory is allocated during run-time.
• Makes it possible to declare arrays with non-constant lengths.
9
![Page 10: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/10.jpg)
Array declaration
malloc(total_size): calloc(num, size):
10
![Page 11: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/11.jpg)
Array declaration
malloc:
Function prototype:
void *malloc(size_t size);
• Does not initialize elements.
11
calloc:
Function prototype:
void *calloc(size_t num, size_t size);
• Initializes all elements to 0.
![Page 12: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/12.jpg)
HomeworkProblems
1. Substring Counter
2. Matrix Multiplication
3. Merging Two Arrays
4. Corpus
12
![Page 13: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/13.jpg)
Problem.
Description
Input
Output
Sample
Substring Counter
1
String 𝑌 is substring of string 𝑋 if and only if 𝑋 contains 𝑌.For example, “abc”, “bcb”, “cba” are substrings of “abcba”;but “aca” is not a substring of “abcba”.
The same substring can appear several times, and your task is to count them. For example, “a” appears three times in “aaa”, while “aa” appears two times in “aaa”.
Given string A and B, count how many times B appears in A.A and B can contain spaces.
Print a single integer which denotes how many timesB appears in A.
[input] [input]
banana aaa aaa
ana aa
[output] [output]
2 4
First line contains a string A. Second line contains a string B.It is guaranteed that 1 ≤ (length B) ≤ (length A) ≤ 3000.
![Page 14: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/14.jpg)
Problem.
Description
Input
Output
Sample
Matrix Multiplication
2
Given two matrices A and B, calculate AB (which denotes the multiplication of the matrices A and B).
Size of A is N × M and size of B is M × K.N, M, K will be given as an input.
Every element of all matrices will bein the range of [-1000, 1000].
Print the result of AB, one row per line. Separate elements of the same row with a single space in between.
[input]
2 3 4
9 8 7
6 5 4
10 11 12 13
14 15 16 17
18 19 20 21
[output]
328 352 376 400
202 217 232 247
First line contains three integers: N, M, K (1 ≤ N, M, K ≤ 200). The following N lines contain M integers each, the elements of A.Following M lines contain K integers each, the elements of B.
![Page 15: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/15.jpg)
Matrix multiplication
• What is a matrix?
15
![Page 16: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/16.jpg)
Matrix multiplication
16
• How is 'matrix multiplication' defined?
![Page 17: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/17.jpg)
Matrix multiplication
17
• How is 'matrix multiplication' defined?
![Page 18: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/18.jpg)
Matrix multiplication
18
• How is 'matrix multiplication' defined?
![Page 19: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/19.jpg)
Matrix multiplication
19
• General formula
A(2 × 3 matrix) ∗ B(3 × 2 matrix)
= C(2 × 2 matrix)
![Page 20: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/20.jpg)
Matrix multiplication
20
• General formula
(𝑥 × 𝑦) matrix ∗ (𝑦 × 𝑧) matrix
= (𝑥 × 𝑧) matrix
Must be equal
![Page 21: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/21.jpg)
Matrix multiplication
21
• General formula
![Page 22: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/22.jpg)
Problem.
Description
Input
Output
Sample
Merging Two Arrays
3
A partially sorted array will be given. It consists of two parts, and each part is already sorted on its own. Make the partially sorted array into a fully sorted array, by merging the two parts.
Length of the entire array N, and length of the first part M, will be given as input. (M ≤ N-1)(Note that M also == the starting index of the second part.)
You have to implement merge() function in your merge.c file.Do not include main() function in your submission code.
Print the fully sorted array.
[input] [input]
6 3 7 2
1 3 5 2 4 6 5 8 1 2 3 4 7
[output] [output]
1 2 3 4 5 6 1 2 3 4 5 7 8
First line contains two integers N, M. (1 ≤ M < N ≤ 100000)Second line contains N integers.
![Page 23: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/23.jpg)
Problem.
Merging Two Arrays
3
[main.c] [merge.c]
![Page 24: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/24.jpg)
Merging two arrays
24
Need three index variables:
• Index for Array 1
• Index for Array 2
• Index for (merged) result array
![Page 25: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/25.jpg)
Merging two arrays
25
• Repeatedly compare the least elements of the two arrays,and copy the smaller one into the third array.
![Page 26: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/26.jpg)
• It's no different if the two "arrays" are actually portions of a single array.
Merging two arrays
26
![Page 27: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/27.jpg)
Merging two arrays
27
Original Array:
Temp Array:
Original Array:
• Just make sure to first write into a temp array, and then copy back into the original array.
![Page 28: Programming Practice - Seoul National Universitymrl.snu.ac.kr/courses/CourseProgrammingPractice/data/practice/2018/8.pdf(dynamic memory allocation) ... Matrix Multiplication 2 Given](https://reader033.vdocuments.us/reader033/viewer/2022042202/5ea34659abf0300d1f52bc72/html5/thumbnails/28.jpg)
Problem.
Description
Input
Output
Sample
Corpus
4
Several words will be given. Your job is to count how many times each word appears. Then print the word and its count in lexicographical order.
Each word contains at most 50 characters, and the number of given words is at most 500.
Input consists of lowercase alphabets and space only. In other word, every word consists of lowercase alphabets only.
The number of words is not given.
Print each word and its count, line by line. (Lexicographical order.)
[input]
i do like you but you do not like me
[output]
but 1
do 2
i 1
like 2
me 1
not 1
you 2
Several words are given in a single line.