Hər boş qutunu , TNT olan qutunu isə ilə qeyd edək. Tapşırıq və dəyərlərindən ibarət, uzunluğu olan sətirlərin sayını tapmaqdan ibarətdir ki, iki ədəd yanaşı olmasın.
Məsələnin cavabı Fibonacci ədədi olacaq:
Məsələnin həlli
Uzunluğu n = 1, n = 2, n = 3 olan müxtəlif qüllələri nəzərdən keçirək. Hər biri və ardıcıllığı ilə uyğun gəlir.
uzunluğu olan iki qüllə: ;
uzunluğu olan üç qüllə: "00", "01", "10";
uzunluğu olan beş qüllə: "000", "001", "010", "100", "101";
Alqoritmin realizasiyası
İşçi massiv elan edək.
#define MAX 45
int fib[MAX];Massivin elementlərini rekurent formulaya uyğun olaraq Fibonacci ədədləri ilə doldururuq.
fib[1] = 2; fib[2] = 3;
for (int i = 3; i < MAX; i++)
fib[i] = fib[i - 1] + fib[i - 2];Daxil olan dəyərini oxuyuruq və cavabı çap edirik.
scanf("%d", &n);
printf("%d\n", fib[n]);Alqoritmin realizasiyası — memorizasiya
İşçi massiv elan edək.
#define MAX 45
int fib[MAX];f funksiyası -ci Fibonacci ədədini hesablayır.
int f(int n)
{
if (n == 1) return 2;
if (n == 2) return 3;
if (fib[n] != -1) return fib[n];
return fib[n] = f(n - 1) + f(n - 2);
}Proqramın əsas hissəsi. Daxil olan dəyərini oxuyuruq və cavabı çap edirik.
scanf("%d", &n);
memset(fib, -1, sizeof(fib));
printf("%d\n", f(n));Java realizasiyası
import java.util.*;
public class Main
{
static int fib[] = new int[45];
static int f(int n)
{
if (n == 1) return 2;
if (n == 2) return 3;
if (fib[n] != -1) return fib[n];
return fib[n] = f(n-1) + f(n - 2);
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
Arrays.fill(fib, -1);
System.out.println(f(n));
con.close();
}
}Python realizasiyası — siyahı
Siyahı -nın elementlərini rekurent formulaya uyğun olaraq Fibonacci ədədləri ilə doldururuq.
lst = [0, 2, 3]
for i in range(3, 45):
lst.append(lst[i - 2] + lst[i - 1])Daxil olan dəyərini oxuyuruq və cavabı çap edirik.
n = int(input())
print(lst[n])Python realizasiyası — memorizasiya
fib funksiyası -ci Fibonacci ədədini hesablayır.
def fib(n):
if dp[n] != -1:
return dp[n]
dp[n] = fib(n - 1) + fib(n - 2)
return dp[n]Proqramın əsas hissəsi. Daxil olan dəyərini oxuyuruq.
n = int(input())Siyahı Fibonacci ədədlərini saxlayacaq. Onun başlanğıc dəyərlərini təyin edirik.
dp = (n + 2) * [-1]
dp[1] = 2
dp[2] = 3Hesablama aparırıq və cavabı çap edirik.
print(fib(n))