אמרי ומיכאל

עמוד

התגובות שלי בפורום

מוצגות 1 תגובות (מתוך 1 סה״כ)
  • מאת
    תגובות
  • בתגובה ל: חידה שאפשר לפתור בתכנות קל #79091

    כותרת: פתרון קצר
    היי.
    זה הפתרון הכי קצר שמצאנו…
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #define S (5)
    const int N=S*(S+1)/2; bool u[N]={0}; bool e(int*p,int l){if(l){int
    n_a={0};for(int i=0,x=((x=p-p[i+1])>0)?(x):(-x);i<l-1;i++
    ,x=((x=p
    -p[i+1])>0)?(x):(-x))if(u[x-1])return 0;else u[x-1]=1;
    for(i=0;i<l-1;n_a
    =( n_a=p-p[i+1])>0?(n_a):(-n_a),i
    ++);for(i=0;i<l;u[n_a
    -1]=1,i++); return e(n_a,l-1); } return 1
    ;}int a={0};void d(int c){int pn=0;if(c>=S){for(int i=0;i<S;printf
    ("%d ",a),i++);printf("n");}else do{for(int k=0;k<N;u[k]=0,k++);
    for(int i=0;i<c;u[a
    -1]=1,i++); int n=pn; do if(++n>N)return;while(
    u[n-1]);if(n){a[c]=n;u[n-1]=1;bool res=e(a,c+1);if(res)d(c+1);u[n-1]=
    0;a[c]=0;pn=n;}else return;}while(1);}void main(){for(int n=1;n<=N;a[
    0]=n,d(1),n++);}

מוצגות 1 תגובות (מתוך 1 סה״כ)