[완료]스도쿠 솔루션 개발중에 질문있습니다

sacredone의 이미지

스도쿠 솔루션알고리즘은 많이나와있지만

직접 구현해보는것이 공부가 될거같아서 해보고있습니다

먼저 자료형은 short 형 [9][9] 배열을 사용하고있습니다

[9][9] 는 스도쿠 테이블이고

후보수에 대한 정보를 저장하기위해 9bit의 플래그와 막비트의

후보수인가 정답인가에 대한 플래그를 위해 short 형을 사용하려고 합니다

궁금한점은

어떠한 함수를 작성중인데 이 함수는 row 나 column 한줄을 받습니다

가로줄 같은경우 [0][0]~[0][9] 이기 때문에 [0]~ 이면 표현할 수 있지만

세로줄 같은경우 [0][0]~[9][0] 으로 ~[0] 이 되버려서 어떻게

인자나 리턴값으로 전달해야할지 잘 모르겠습니다

테이블을 전역변수로 만들어서

각 함수를 그냥 void () 로 만들어버리고

전역변수 테이블을 인덱스로 조작해버리면 그만이긴한데

함수를 잘만 만들면 전역변수를 한개도 안쓸수도있다고 생각해서

이러한 방식으로 하려고하는데 조언좀 부탁드려요

addnull의 이미지

#include <stdio.h>
 
#define		N	9
 
void column(short* ptr);
void row(short* ptr);
 
int main(int argc, char** argv) {
	short data[N][N];
 
	for (int i=0; i<N*N; ++i) {
		data[i/N][i%N] = i+1;
	}
 
	printf("first row\n");
	row(data[0]);
	printf("second row\n");
	row(data[1]);
	printf("third row\n");
	row(data[2]);
 
	printf("first column\n");
	column(data[0]);
	printf("second column\n");
	column(&data[0][1]);
	printf("third column\n");
	column(&data[0][2]);
 
	return 0;
}
 
void column(short* ptr) {
	for (int i=0; i<N; ++i) {
		printf("%4d\n", *(ptr+i*N));
	}
}
 
void row(short* ptr) {
	for (int i=0; i<N; ++i) {
		printf("%4d", *(ptr+i));
	}
	printf("\n");
}

실행 결과입니다.

first row
   1   2   3   4   5   6   7   8   9
second row
  10  11  12  13  14  15  16  17  18
third row
  19  20  21  22  23  24  25  26  27
first column
   1
  10
  19
  28
  37
  46
  55
  64
  73
second column
   2
  11
  20
  29
  38
  47
  56
  65
  74
third column
   3
  12
  21
  30
  39
  48
  57
  66
  75
sacredone의 이미지

감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.