Á¢¼ÓÀ» ÃàÇÏÇÕ´Ï´Ù^^
À̹ø ´Ü°è´Â °¡Àå ¾î·Æ°í Áß¿äÇÑ 3´Ü°èÀÔ´Ï´Ù.
¾Ï±âÇÏ¸é ½Ç¼öÇÏ´Â °ÍÀÔ´Ï´Ù.
3-1. n!-¼øÈ¯¾Ë°í¸®Áò
#include<stdio.h>
int f(int p)
{
if(p==1) return 1;
int u;
u = p*f(p-1);
return u;
}
int main()
{
int n,k;
scanf("%d",&n);
k=f(n);
printf("k=%d\n",k);
return 0;
}
3-2. ÇǺ¸³ªÄ¡¼ö¿-¼øÈ¯¾Ë°í¸®Áò
#include<stdio.h>
int f(int p)
{
if(p==1 || p==2) return 1;
return f(p-1)+f(p-2);
}
int main()
{
int n,k ;
scanf("%d",&n);
k=f(n);
printf("%d\n",k);
return 0;
}
3-3. 2Áø¼ö ±¸Çϱâ-¼øÈ¯¾Ë°í¸®Áò
#include<stdio.h>
int f(int p)
{
if(p==0) return 0;
f(p/2);
printf("%d",p%2);
return 0;
}
int main()
{
int n;
scanf("%d",&n);
f(n);
printf("\n");
return 0;
}
3-4. 2ÁøÆ®¸®-¼øÈ¯¾Ë°í¸®Áò
#include<stdio.h>
int n;
int f(int p)
{
if(p>n) return 0;
f(p*2);
printf("%d ",p);
f(p*2+1);
return 0;
}
int main()
{
scanf("%d",&n);
f(1);
printf("\n");
return 0;
}
3-5. 2Áø Æ®¸® ±íÀÌ
(intput)
1 2 4 7 -1 -1 8 -1 -1 -1 3 5 -1 -1 6 -1 -1
(output)
4 1 3
4
#include<stdio.h>
int count[3],ans;
int dfs(int d)
{
int v,cnt=0;
scanf("%d",&v);
if(v==-1) return 0;
if(ans < d) ans = d;
cnt += dfs(d+1);
cnt += dfs(d+1);
++count[cnt];
return 1;
}
int main()
{
dfs(1);
for(int i=0; i<3; i++)printf("%d ",count[i]);
printf("\n%d\n",ans);
return 0;
}
3-6. 2Áø Æ®¸®-¼øÈ¯¾Ë°í¸®Áò
(intput)
1 2 4 7 -1 -1 8 -1 -1 -1 3 5 -1 -1 6 -1 -1
(output)
-1 7 -1 4 -1 8 -1 2 -1 1 -1 5 -1 3 -1 6 -1
-1 -1 7 -1 -1 8 4 -1 2 -1 -1 5 -1 -1 6 3 1
#include<stdio.h>
int N, num[1004], left[1004], right[1004];
int dfs()
{
int v;
scanf("%d", &v);
if(v==-1) return 0;
int n=++N, k;
num[n]=v;
if(k=dfs()) left[n]=k;
if(k=dfs()) right[n]= k;
return n;
}
int in(int n)
{
if(!n){printf("-1 ");return 0;}
in(left[n]);
printf("%d ",num[n]);
in(right[n]);
return 0;
}
int pos(int n)
{
if(!n){printf("-1 ");return 0;}
pos(left[n]);
pos(right[n]);
printf("%d ",num[n]);
return 0;
}
int main()
{
dfs();
in(1); puts("");
pos(1); puts("");
return 0;
}
3-7. ¹«ÇÑ ÀÌÁø Æ®¸®
(intput)
17 73
(output)
4 6
#include<stdio.h>
int L,R;
int f(int a, int b)
{
if(a==1 && b == 1) return 0;
if(a == 1){
R += b-1;
return 0;
}
if(b==1){
L += a-1;
return 0;
}
if(a > b){
L += a/b;
f(a%b, b);
}
if(a < b){
R += b/a;
f(a, b%a);
}
}
int main()
{
int a,b;
scanf("%d %d",&a, &b);
f(a,b);
printf("%d %d\n",L,R);
return 0;
}
3-8. ÇϳëÀÌž-¼øÈ¯¾Ë°í¸®Áò
#include<stdio.h>
int f(int p, int s, int e)
{
int k;
if(p<=0) return 0;
k=6-(s+e);
f(p-1,s,k);
printf("%d %d %d\n",p,s,e);
f(p-1,k,e);
return 0;
}
int main()
{
int n;
scanf("%d",&n);
f(n,1,3);
return 0;
}
3-9. ºÎºÐ ÁýÇÕ(BT)
#include<stdio.h>
int n,d[100],z[100];
int f(int p, int s)
{
int i;
if(p==n+1){
printf("{");
for(i=1; i<=n; i++){
if(z[i]==1) printf("%d ",d[i]);
}
printf("}=%d\n",s);
return 0;
}
z[p]=0; f(p+1, s);
z[p]=1; f(p+1, s+d[p]);
return 0;
}
int main()
{
int i;
scanf("%d",&n);
for(i=1; i<=n; i++){
scanf("%d",&d[i]);
}
f(1,0);
return 0;
}
3-10. ¹Ì·Î ã±â-dfs(BT)
#include<stdio.h>
#include<stdlib.h>
int d[101][101],n, dx[101], dy[101];
int f(int x, int y, int p)
{
int i;
if(x==n && y==n){
dx[p]=x; dy[p]=y;
for(i=1; i<=p; i++) printf("%d %d\n",dx[i], dy[i]);
printf("ok!\n");
return 0;
}
if(d[x][y]==1){
dx[p]=x; dy[p]=y;
d[x][y]=0;
f(x-1, y, p+1);
f(x, y-1, p+1);
f(x+1, y, p+1);
f(x, y+1, p+1);
d[x][y]=1;
}
return 0;
}
int main()
{
int i,j;
freopen("input.txt","r",stdin);
scanf("%d",&n);
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
scanf("%d",&d[i][j]);
}
}
f(1,1,0);
return 0;
}
3-11. Áߺ¹ ¼ø¿-dfs
#include<stdio.h>
int n,m,d[101];
int f(int p, int q)
{
int i,j;
if(q>=m){
for(j=1; j<=m; j++)printf("%d ",d[j]);
printf("\n");
return 0;
}
for(i=1; i<=n; i++){
d[q+1]=i;
f(i,q+1);
}
return 0;
}
int main()
{
scanf("%d %d",&n, &m);
f(0,0);
return 0;
}
3-12. ¼ø¿-dfs
#include<stdio.h>
int n,m,d[101],z[101];
int f(int p, int q)
{
int i,j;
if(q>=m){
for(j=1; j<=m; j++)printf("%d ",d[j]);
printf("\n");
return 0;
}
for(i=1; i<=n; i++){
if(z[i]==0){
z[i]=1;
d[q+1]=i; f(i,q+1);
z[i]=0;
}
}
return 0;
}
int main()
{
scanf("%d %d",&n, &m);
f(0,0);
return 0;
}
3-13. Á¶ÇÕ-dfs
#include<stdio.h>
int n,m,d[101];
int f(int p, int q)
{
int i,j;
if(q>=m){
for(j=1; j<=m; j++)printf("%d ",d[j]);
printf("\n");
return 0;
}
for(i=p+1; i<=n; i++){
d[q+1]=i; f(i,q+1);
}
return 0;
}
int main()
{
scanf("%d %d",&n, &m);
f(0,0);
return 0;
}
3-14. Áߺ¹Á¶ÇÕ-dfs
#include<stdio.h>
int n,m,d[101];
int f(int p, int q)
{
int i,j;
if(q>=m){
for(j=1; j<=m; j++)printf("%d ",d[j]-(j-1));
printf("\n");
return 0;
}
for(i=p+1; i<=n; i++){
d[q+1]=i; f(i,q+1);
}
return 0;
}
int main()
{
scanf("%d %d",&n, &m);
n=n+m-1;
f(0,0);
return 0;
}
3-15. ÄüÁ¤·Ä(1´Ü°è ºÐÇÒ Á¤º¹)
(ÇÁ·Î±×·¥)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int d[100];
int f(int s, int e)
{
int ss,ee,t;
if(s>=e) return 0;
while(1)
{
ss=s+1; ee=e;
while(d[s]>=d[ss] && ss <= e)ss++;
while(d[s]<=d[ee] && ee > s)ee--;
if(ss>=ee)break;
t=d[ss]; d[ss]=d[ee]; d[ee]=t;
}
t=d[s]; d[s]=d[ee];d[ee]=t;
f(s, ee-1);
f(ee+1, e);
return 0;
}
int main()
{
int i,n;
srand(time(0));
scanf("%d",&n);
for(i=1; i<=n; i++){
d[i]=rand()%100;
}
for(i=1; i<=n; i++)printf("%d ",d[i]);
printf("\n\n");
f(1,n);
for(i=1; i<=n; i++)printf("%d ",d[i]);
printf("\n");
return 0;
}
3-16.2ÁøÆ®¸®-ºñ¼øÈ¯¾Ë°í¸®Áò
2ÁøÆ®¸® ÀüÀ§
#include<stdio.h>
int s[1004];
int main()
{
int n,sp=0,nl,nr;
scanf("%d",&n);
sp++; s[sp]=1;
while(1){
printf("%d ",s[sp]);
nl=s[sp]*2; nr=s[sp]*2+1; sp--;
if(nr<=n){sp++; s[sp]=nr;}
if(nl<=n){sp++; s[sp]=nl;}
if(sp==0)break;
}
cout << endl;
return 0;
}
2ÁøÆ®¸® ÁßÀ§
#include<stdio.h>
int s[1004]; bool d[1004];
int main()
{
int n,sp=0,nl,nr;
scanf("%d",&n);
sp++; s[sp]=1;
memset(d,0,sizeof(d));
while(1){
if(d[s[sp]]==0){
nl=s[sp]*2; d[s[sp]]=1;
if(nl <= n){
sp++; s[sp]=nl;
}
}else{
printf("%d ",s[sp]);
nr=s[sp]*2+1; sp--;
if(nr<=n){
sp++; s[sp]=nr;
}
}
if(sp==0)break;
}
return 0;
}
2ÁøÆ®¸® ÈÄÀ§
#include<stdio.h>
int s[1004]; bool d[1004];
int main()
{
int n,sp=0,a,nl;
scanf("%d",&n);
sp++; s[sp]=1;
while(1){
if(d[s[sp]]==0){
nl=s[sp]*2; d[s[sp]]=1;
if(nl<=n){sp++; s[sp]=nl;}
}
else {
printf("%d ",s[sp]);
a=s[sp]; sp--;
if(a%2==0){
if(a+1<=n){sp++; s[sp]=a+1;}
}
}
if(sp==0)break;
}
return 0;
}
3-17. »öÁ¾ÀÌ ¸¸µé±â(2´Ü°è ºÐÇÒ Á¤º¹)
#include<stdio.h>
int a[200][200];
int blue, white;
int f(int x, int y, int p)
{
int b=0, w=0,i,j;
for (i=x;i<x+p;i++){
for (j=y;j<y+p;j++){
if (a[i][j]==1) b++;
else w++;
}
}
if (b==0) {white++; return 0;}
if (w==0) {blue++; return 0;}
f(x, y, p/2);
f(x, y+p/2, p/2);
f(x+p/2, y, p/2);
f(x+p/2, y+p/2, p/2);
return 0;
}
int main()
{
int n,i,j;
scanf("%d",&n);
for (i=0;i<n;i++){
for (j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
f(0,0,n);
printf("%d\n", white);
printf("%d\n", blue);
return 0;
}
3-18. ¿©¿Õ¹®Á¦(BT)
#include<stdio.h>
int qq[100];
int n;
int bound(int pp)
{
int i;
for(i=1; i<pp; i++){
if(qq[pp] == qq[i]) return 0;
if(pp+qq[pp] == i+qq[i]) return 0;
if(pp-qq[pp] == i-qq[i]) return 0;
}
return 1;
}
int q(int p)
{
int i, k;
if(p>n){
for(k=1; k<=n; k++) printf("(%d %d)", k, qq[k]);
printf("\n");
return 0;
}
for(i=1; i<=n; i++){
qq[p]=i;
if(bound(p)) q(p+1);
}
return 0;
}
int main()
{
scanf("%d", &n);
q(1);
return 0;
}
|