clear all
clc
a1=[3 1 1 0; 1 2 0 1 ]
b=[7; 12]
c=[-3 4 0 0 0]

n = 2
bv= n+1 : size(a1,2)
a=[a1 b]
zc=c(bv)*a-c
Simplex_table=[a;zc]
array2table(Simplex_table,'variablename',{'x1','x2','s1','s2','sol'},'rownames',{'bv1','bv2','zj-cj'})
run=true
while run
    if any(zc(1:end-1)<0)
        [minzc pivotCol]=min(zc(1:end-1))
        sol=a(:,end)
        col=a(:,pivotCol)
        if all(col<=0)
            printf('soluntion is unbounded')
        else
            for i=1:size(a,1)
                if col(i)>0
                    ratio(i)=sol(i)/col(i)
                else
                    ratio(i)=inf
                end
            end
            [minr pivotRow]=min(ratio)
            bv(pivotRow)=pivotCol
            pivotKey=a(pivotRow,pivotCol)
            a(pivotRow,:)=a(pivotRow,:)/pivotKey
            
            for i=1:size(a,1)
                if i~=pivotRow
                    a(i,:)=a(i,:)-a(i,pivotCol)*a(pivotRow,:)
                end
            end
            
            zc=c(bv)*a-c
            nexttable=[a;zc]
            array2table(nexttable,'variablename',{'x1','x2','s1','s2','sol'},'rownames',{'bv1','bv2','zj-cj'})
        end
    else
        run=false
        fprintf('final optimal table has been obtained and optimal vaule is %f',zc(end))
    end
end