회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
c++ 왜 실행이 안될까요..
2580번 - 스도쿠
wldnjs3633
3년 전
0
맞는데로 짠거 같은데 실행해도 되지가 않네요..
어디가 틀렸는지 찾아주실수 있으실까요..ㅠㅠㅠㅠㅠㅠㅠㅠ
#include <iostream> #include <vector> using namespace std; vector<pair<pair<int,int>,int>> question; // <(x,y),값> int sudoku[9][9]={0,}; bool checkrowsudoku[9][9]={false,}; bool checkcolsudoku[9][9]={false,}; bool endsdk=false; //스도쿠는 9X9이다 //구역 확인 함수 bool checkarea(int num){ int a,b,c,d; bool checking=false; int row=question[num].first.first; int col=question[num].first.second; int value=question[num].second; //구역1(1,1)~(3,3) if((row>=0&&row<3)&&(col>=0&&col<3)) a=0; b=3; c=0; d=3; //구역2(4,1)~(6,3) if((row>=3&&row<6)&&(col>=0&&col<3)) a=3; b=6; c=0; d=3; //구역3(7,1)~(9,3) if((row>=6&&row<9)&&(col>=0&&col<3)) a=6; b=9; c=0; d=3; //구역4(1,4)~(3,6) if((row>=0&&row<3)&&(col>=3&&col<6)) a=0; b=3; c=3; d=6; //구역5(4,4)~(6,6) if((row>=3&&row<6)&&(col>=3&&col<6)) a=3; b=6; c=3; d=6; //구역6(7,4)~(9,6) if((row>=6&&row<9)&&(col>=3&&col<6)) a=6; b=9; c=3; d=6; //구역7(1,7)~(3,9) if((row>=0&&row<3)&&(col>=6&&col<9)) a=0; b=3; c=6; d=9; //구역8(4,7)~(6,9) if((row>=3&&row<6)&&(col>=6&&col<9)) a=3; b=6; c=6; d=9; //구역9(7,7)~(9,9) if((row>=6&&row<9)&&(col>=6&&col<9)) a=6; b=9; c=6; d=9; for(int i=a;i<b;i++) for(int j=c;j<d;j++) if(value==sudoku[i][j]) checking=true; return checking; } bool promising(int num){ //같은 라인에 있을 경우 if(checkrowsudoku[question[num].first.first][num]||checkcolsudoku[question[num].first.second][num]) return false; //같은 구역에 있을 경우 else if(checkarea(num)) return false; else return true; } void sdk(int num){ if(num==question.size()) endsdk=true; //스도쿠 완성, 종료 else{ for(int i=0;i<9;i++){ if(endsdk) return; //종료조건 else if(promising(i)){ question[num].second=i+1; //값만 집어넣으면 되니 pop시킬 이유갸 없음 sdk(num+1); }else continue; } } } int main(void){ //입력 for(int i=0;i<9;i++) for(int j=0;j<9;j++) { scanf("%d",&sudoku[i][j]); checkrowsudoku[i][sudoku[i][j]-1]=true; //해당 행에 숫자가 들어있는지 확인 checkcolsudoku[i][sudoku[i][j]-1]=true; //해당 열에 숫자가 들어있는지 확인 //0이 들어간 좌표를 입력해서 해당 문제만 진행할 예정 if(sudoku[i][j]==0) question.push_back({{i,j},0}); } //스도쿠 실행 sdk(0); //스도쿠 결과 입력 for(int i=0;i<question.size();i++) sudoku[question[i].first.first][question[i].first.second]=question[i].second; //출력 for(int i=0;i<9;i++){ for(int j=0;j<9;j++) printf("%d ",sudoku[i][j]); putchar('\n'); } return 0; }
댓글을 작성하려면
로그인
해야 합니다.
wldnjs3633 3년 전
맞는데로 짠거 같은데 실행해도 되지가 않네요..
어디가 틀렸는지 찾아주실수 있으실까요..ㅠㅠㅠㅠㅠㅠㅠㅠ