View Single Post
ישן 07-11-07, 20:29   # 4
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

תודה על האתגר לשעת ערב זו ;)

למיטב הבנתי את השאלה, אתה צריך לטפל גם במקרה כזה:
ab$abe$ab$ab$adsg

כלומר יש מחרוזת סימטרית... פשוט לא עם ה$ ה-1.
כמוכן אין סיבה ממשית לרוץ על כל המחרזות של 100 תווים (למשל) אם מצאנו
את השרשרת ב10 הראשונים...

הנה מימוש שלי:

PHP קוד:
#include <stdio.h>
#include <stdlib.h>


int sim(char **stint len) {
    
int ok 00fst 0next 0;

    while (!
ok && len) {
        
//printf("%c\n", (*st)[i]);
        
if ((*st)[i] == '$'
            if (!
fstfst i;
                else {
                    
next = (fst)+i;
                    if (
next len) {
                        if ((*
st)[next] == '$'ok 1;
                        }
                    else 
fst i;
                }
        
i++;
    }
    return 
ok;
}

int main() {
    
charst;
    
int st_size 0;
    
printf("Enter ST size: ");
    
scanf("%d", &st_size);
    
st = (char *) malloc(sizeof(char) * st_size);
    
printf("Enter ST(%d): "st_size);
    
scanf("%s"st);

    
printf("Result of SIM: %d\n"sim(&stst_size));
    return 
0;


הקוד רץ על GCC, כמובן טל"ח.

פלט:
קוד:
yury@moon ~ $ gcc sim.c -o sim
yury@moon ~ $ ./sim
Enter ST size: 20
Enter ST(20): abcd$dg$asdg$adgd$dsgsg
Result of SIM: 1
yury@moon ~ $
__________________
FreeBSD, a *nix operating system

Last edited by SDF; 07-11-07 at 20:35..
  Reply With Quote