Line 88: Line 88:
 
   }
 
   }
  
 +
========================
 +
Hanye Xu Lec18 Mar 25
 +
Explanation of Ipa2-1
 +
Integer partition
 +
use recurstion
 +
 +
void f(int n)
 +
  {
 +
    int i;
 +
    if (n==0)
 +
      {
 +
          return;
 +
      }
 +
      if (i=1;i<n;i++)
 +
      {
 +
        f(n-i);
 +
      }
 +
  }
 +
=================================
 
Lecture 18 Summery Shiyu Wang  Mar25th
 
Lecture 18 Summery Shiyu Wang  Mar25th
  

Revision as of 08:07, 10 April 2012

John Ribeiro - Lecture 18

A square refers to a single building block the composes a piece. A piece refers to a compilation of multiple squares.

Duplicates are formed through:

Rotation Mirroring

Suppose you want to generate pieces of n squares:

1) Break n into the sum of positive integers. Each integer is the number of squares in each row. 2) Shift the squares to create different pieces 3) Eliminate Duplicates

void f ( int n ) { int i; if ( n == 0 ) {

 return;

} for ( i = 1 ; i < n ; i ++ ) {

 f ( n - i );

} }

That means that each integer can be partitioned into its components, for example,

4 = 1 + 3 4 = 2 + 2 4 = 3 + 1 4 = 4

For each n integer, there will be n partitions

This algorithm will not generate a non-continuous piece

NOT:

xox oxo xox

OR:

oxo oxo ooo

BUT:

ooo oxx ooo

  • Where o denotes a block and x an empty space.


Lecture notes_Lecture18_Mar 20_Kailu Song

1. The explanation of program 2

  a. the square and piece(one piece have several square)
  b. duplicates: rotate the piece will generate another duplicate piece
  c. rotation mirror: horizontal mirror and vertical mirror
  e. invalid piece: there is a space between two square in one row(eg.010 101 010)
  For this assignment, give the number of squares, generate all picecs(delete invalid piece, deplicate piece and mirror piece) using one dimensional array.

2. Hint for this assignment:

  first stage: partition integers:
  ex. 4 = 1+1+1+1
      4 = 1+1+2
      4 = 1+2+1
      4 = 1+3
      4 = 2+2...
  Use recursion
  void f(int n)
  {
    int i;
    if (n==0)
      {
          return;
      }
     if (i=1;i<n;i++)
      {
        f(n-i);
      }
  }
============

Hanye Xu Lec18 Mar 25 Explanation of Ipa2-1 Integer partition use recurstion

void f(int n)
  {
    int i;
    if (n==0)
      {
          return;
      }
     if (i=1;i<n;i++)
      {
        f(n-i);
      }
  }
=====================

Lecture 18 Summery Shiyu Wang Mar25th

This class talked about how to solve IPA2-1. Generally, Tetris usually has 4 squares in each block, in this assignment, we will have different number of squares in each block. And we will print out each combination,which does not includes any duplicates. The duplicates means rotation or mirror. For example,

(111,100)      ,
(100,100,110) are rotation.

(111,100), (111,001), are mirror. All square, need to be connected to each other by side, which means (1000,1100,0110,0011) is valid,but (1000,0100,0010,0001) is not valid. We can solve this problem by splitting the integer in different ways. hint: 5=1+3+1

=2+2+1
=4+1
...

The procedure for solving this problem is, 1. Break n into sum of positive integers, each is number of square in a row. 2. Shift the square to create different species. 3. Eliminate duplicates.

The sample code is like this,

Void f(int n) {

 int i;
 if(n==0)
 {
   print;
   return;
 }
 for(i=0;i<n;i++)
 {
   f(n-1);
 }

}

===================

Kevin Tan(0023987592), section#2 notes 03/22


three ways to allcate memory

1.static : know the size when writing the program eg. int arr[100]; vector v[200];

2.know the size somewhere during execution eg. int length; scanf("%d",&length); int *arr; arr = malloc(sizeof(int)*(length));

3.grow and shrink based on run-time needs (dynamic structure) eg.linked list binary tree

typedef struct dstruture; {

 int value;
 vector vec;
 person *p;
 
 sturct dstruture *next;
 sturct dstruture *left;
 sturct dstruture *right;

}

Alumni Liaison

Basic linear algebra uncovers and clarifies very important geometry and algebra.

Dr. Paul Garrett