20-08-2006, 13:32
|
|
|
|
חבר מתאריך: 15.08.06
הודעות: 465
|
|
פיתרון אמיתי..
כתבתי לך קוד, זה גם יעיל עבור N מדרגות שבכל פעם אתה יכול לעלות MIN עד MAX מדרגות.
נתתי ערכים לN, MIN וMAX שיפתרו בדיוק את המקרה שלך, בבקשה:
קוד:
#include <stdio.h>
#define n 10
#define MIN 1
#define MAX 2
int arr [n+1] = { 1,1,1,1,1,1,1,1,1,1 ,10 } ;
int arr2 [n];
int l;
void Func(int k)
{ int i , sum=0 ;
if (k==n) {
for ( i=l ;i< n;i++ )
sum += arr[i]*arr2[i] ;
if (sum == arr [n]) {
for (i=l;i<n;i++)
printf ( "%d ",arr2[i]);
printf ("\n");
}
return ;
}
for (arr2[k]=MIN;arr2[k]<=MAX;arr2[k]++)
Func(k+1);
}
int main()
{
int i;
for (i=0;i<=n/MAX;i++)
{
l=i;
Func (l);
}
}
נ.ב. לDefunk - בטח שהוא התכוון שזה משנה! אחרת היו בדיוק 6 אפשרויות.
_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature
נערך לאחרונה ע"י ם_O בתאריך 20-08-2006 בשעה 13:36.
|