태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'CPP'에 해당되는 글 8건

  1. 2016.04.13 가장 넓은 직사각형 구하는 알고리즘 ( O(MN) )
  2. 2016.04.13 printf로 디버깅 하기
  3. 2016.03.30 C++ 컴파일러
  4. 2016.03.17 Lambda function (1)
  5. 2016.03.16 Lambda function
  6. 2016.03.03 짝수만 출력하기
  7. 2015.12.23 Couple
  8. 2007.04.24 비트 연산자

가장 넓은 직사각형 구하는 알고리즘 ( O(MN) )


/*
From :
http://stackoverflow.com/questions/7245/puzzle-find-largest-rectangle-maximal-rectangle-problem
*/

int findMaxRect (int rect[XSIZE][YSIZE]) {
	int ret = 0;
	unsigned int x = 0, y = 0, k = 0;
	int sum[YSIZE+1] = { 0, };
	int stack[YSIZE][2] = { 0, };
	int stIdx = -1;
	int width = 0;
	int y0 = 0, w0 = 0, tempArea = 0;
	
	for ( x = 0; x < XSIZE; ++x ) { 
		for ( y = 0; y <= YSIZE; ++y ) {
			sum[y] = rect[y][x] ? ++sum[y] : 0;
		}
		sum[YSIZE] = 0;
		width = 0;
		stIdx = -1;
		for ( y = 0; y <= YSIZE; ++y) {
			if ( sum[y] > width ) {
				stack[++stIdx][0] = y;
				stack[  stIdx][1] = width;
				width = sum[y];				
			} 
			else if ( sum[y] < width ) {

				while(1) {
					y0 = stack[stIdx  ][0];
					w0 = stack[stIdx--][1];
					tempArea =  width * (y - y0);
				  
					ret = tempArea > ret ? tempArea : ret;

					width = w0;
					if( sum[y] >= width) break;
				} 
				width = sum[y];
				if ( width != 0 ) {
					stack[++stIdx][0] = y0;
					stack[  stIdx][1] = w0;	
				}
			}
		}
	}	
	
	return ret;
}


'Coding > C/CPP 삽질기' 카테고리의 다른 글

Bit 연산 정리  (0) 2016.08.20
가장 넓은 직사각형 구하는 알고리즘 ( O(MN) )  (0) 2016.04.13
printf로 디버깅 하기  (0) 2016.04.13
C++ 컴파일러  (0) 2016.03.30
Posted by chobocho

#define DEBUG


#ifdef DEBUG

    #define cprintf(...) printf(__VA_ARGS__)

#else

    #define cprintf(...) 

#endif



'Coding > C/CPP 삽질기' 카테고리의 다른 글

가장 넓은 직사각형 구하는 알고리즘 ( O(MN) )  (0) 2016.04.13
printf로 디버깅 하기  (0) 2016.04.13
C++ 컴파일러  (0) 2016.03.30
Lambda function  (1) 2016.03.17
Posted by chobocho
TAG CPP, Debug, printf

무료 C++ 컴파일러



1. 구름 IDE ( https://ide.goorm.io/ )

웹기반 IDE 이며, 기본 사용은 무료 이다.

웹 브라우져만 있으면 손쉽게 다양한 언어로 개발이 가능 하다.




2. C++ shell ( http://cpp.sh )

무료이며, 웹브라우져만 띄우면 짧은 코드를 쉽게 실행 할 수 있다.



3. Cygwin ( http://cygwin.com/install.html )

자세한 설명은 Cygwin 홈페이지를 참고하시면 됩니다.



4. Visual studio Express ( https://www.visualstudio.com/ko-kr/products/visual-studio-community-vs.aspx )

너무 유명하므로 설명은 생략 합니다.


'Coding > C/CPP 삽질기' 카테고리의 다른 글

printf로 디버깅 하기  (0) 2016.04.13
C++ 컴파일러  (0) 2016.03.30
Lambda function  (1) 2016.03.17
Lambda function  (0) 2016.03.16
Posted by chobocho

[ C++ Lambda 함수 설명 ]

https://msdn.microsoft.com/ko-kr/library/dd293608.aspx

https://msdn.microsoft.com/ko-kr/library/dd293599.aspx

http://en.cppreference.com/w/cpp/language/lambda


'Coding > C/CPP 삽질기' 카테고리의 다른 글

C++ 컴파일러  (0) 2016.03.30
Lambda function  (1) 2016.03.17
Lambda function  (0) 2016.03.16
짝수만 출력하기  (0) 2016.03.03
Posted by chobocho
TAG C++, CPP, Lambda

#include <iostream>

using namespace std;


int main()

{

   int num = 2;

  

   auto sum = [](int n) -> int{ return n*n; }(num);

   

   cout << num << " " << sum << endl;

   

   return 0;

}



2 4


'Coding > C/CPP 삽질기' 카테고리의 다른 글

Lambda function  (1) 2016.03.17
Lambda function  (0) 2016.03.16
짝수만 출력하기  (0) 2016.03.03
Couple  (0) 2015.12.23
Posted by chobocho
TAG CPP, Lambda

#include <iostream>

using namespace std;


int main()

{

    for (int i = 0; i < 100; i++) {

       i % 2 ||  cout << i << endl;   

    }

    return 0;

}




'Coding > C/CPP 삽질기' 카테고리의 다른 글

Lambda function  (0) 2016.03.16
짝수만 출력하기  (0) 2016.03.03
Couple  (0) 2015.12.23
사각형 개수 구하기  (0) 2014.11.12
Posted by chobocho
TAG CPP

Couple

Coding/C/CPP 삽질기 2015.12.23 00:42

#include <stdio.h>

#include <stdlib.h>


#define FALSE 0

#define TRUE  1



int IsSheBeautiful() { return (rand() % 101 > 99); }

int IsSheLikeMe()    { return (rand() % 51  > 49); }


int MeetGirl(int count) {

    int amIcouple = FALSE;

    

    // printf ("%d : I meet a girl!\n", count);

    

    if ( IsSheBeautiful() && IsSheLikeMe() ) {

        amIcouple = TRUE;

    }

    

    return amIcouple;

}


int Process() {

    int amIcouple = FALSE;

    int count = 0;

    

    while ( amIcouple == FALSE ) {

        amIcouple = MeetGirl(++count);      

    }

    printf ("I met %d girls\n", count);

    return amIcouple; 

}


int main(int argc, char **argv) {

    printf("%s\n", Process() == TRUE ? "I am not a single!" : "I am a sigle");

    return 0;

}


'Coding > C/CPP 삽질기' 카테고리의 다른 글

짝수만 출력하기  (0) 2016.03.03
Couple  (0) 2015.12.23
사각형 개수 구하기  (0) 2014.11.12
Mirror  (0) 2014.10.27
Posted by chobocho
TAG CPP

#include <stdio.h>


void process(void);

void showBit(int n);



int main (int argc, char **argv) {

    process();

    return 0;

}


void process(void) {

    int          nSignNumber   = 0xFFFFFFFF;

    unsigned int nUnSignNumber = 0xFFFFFFFF;

    

    printf ("Original :\n%d %u\n", nSignNumber, nUnSignNumber);

    showBit(nSignNumber);

    showBit(nUnSignNumber);

    

    nSignNumber   <<= 1;

    nUnSignNumber <<= 1;

   

    printf ("<< 1 :\n%d %u\n", nSignNumber, nUnSignNumber); 

    printf ("%d %u\n", nSignNumber, nUnSignNumber);

    showBit(nSignNumber);

    showBit(nUnSignNumber);


    nSignNumber   >>= 1;

    nUnSignNumber >>= 1;

    

    printf (">> 1 :\n%d %u\n", nSignNumber, nUnSignNumber); 

    printf ("%d %u\n", nSignNumber, nUnSignNumber);

    showBit(nSignNumber);

    showBit(nUnSignNumber);    

}


void showBit(int n) {

    for (int i = 31; i >= 0; i--) {

        printf ("%d%s", ((n & 1<<i)?1:0), ((i % 4 == 0)?" ":""));

    } 

    printf ("\n");

}



int에 >> 연산자를 적용할 경우, 제일 왼쪽 비트가 그대로 복사 됨

unsigned int인 경우 0으로 채워짐 



Hi-iMac:CPP chobocho$ ./a.out

Original :

-1 4294967295

1111 1111 1111 1111 1111 1111 1111 1111

1111 1111 1111 1111 1111 1111 1111 1111

<< 1 :

-2 4294967294

-2 4294967294

1111 1111 1111 1111 1111 1111 1111 1110

1111 1111 1111 1111 1111 1111 1111 1110

>> 1 :

-1 2147483647

-1 2147483647

1111 1111 1111 1111 1111 1111 1111 1111

0111 1111 1111 1111 1111 1111 1111 1111


'Coding > C/CPP 삽질기' 카테고리의 다른 글

심심풀이 프로그래밍...2  (0) 2007.09.17
비트 연산자  (0) 2007.04.24
별 그려주는 코드  (0) 2006.08.22
입력 버퍼비우기  (0) 2006.02.23
Posted by chobocho
TAG BIT, CPP