亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rlsmatrix.h

?? 很好的矩陣鏈的計算代碼
?? H
字號:
void AddSMatrix(RLSMatrix a,RLSMatrix b,RLSMatrix &c)
{
	//求兩個用三元組順序表表示的二維矩陣a與b的和,并用新的矩陣c返回

	int i,j,s;
	int t,tp,arow,ccol;
	int ctemp[21];

	if((a.mu!=b.mu) || (b.nu!=a.nu))                  //判斷是否可以進行加法運算
	{
		printf("add error\n");
		exit(0);
	}
	c.mu=a.mu;c.nu=a.nu;c.tu=0;
	if(a.tu+b.tu==0)
		return;
	
	for(arow=1;arow<=a.mu;arow++)
	{
		for(i=1;i<=a.nu;i++)
			ctemp[i]=0;

		c.rpos[arow]=c.tu+1;
		if(arow<a.mu)
		{
			tp=a.rpos[arow+1];
			t =b.rpos[arow+1];
		}
		else
		{
			tp=a.tu+1;
			t =b.tu+1;
		}
		j=a.rpos[arow];s=b.rpos[arow];
		//在一行中進行同時遍歷,當a中的一個元素的列數更小時賦給ctemp數組,更大則b的賦給數組,否則運算后賦給數組
		while(j<tp && s<t)
		{
			if(a.data[j].col<b.data[s].col)
			{
				ccol       =a.data[j].col;
				ctemp[ccol]=a.data[j].number;
				j++;
			}
			else if(a.data[j].col>b.data[s].col)
			{
				ccol       =b.data[s].col;
				ctemp[ccol]=b.data[s].number;
				s++;
			}
			else
			{
				ccol       =a.data[j].col;
				ctemp[ccol]=a.data[j].number+b.data[s].number;
				++j;s++;
			}
			
		}
		while(j<tp)
		{
			ccol       =a.data[j].col;
			ctemp[ccol]=a.data[j].number;
			j++;
		}
		while(s<t)
		{
			ccol       =b.data[s].col;
			ctemp[ccol]=b.data[s].number;
			s++;
		}

		for(ccol=1;ccol<=c.nu;ccol++)
			if(ctemp[ccol])
			{
				if(++c.tu>MAXSIZE)
				{
					printf("add bounds error\n");
					exit(0);
				}
				c.data[c.tu].row   =arow;
				c.data[c.tu].col   =ccol;
				c.data[c.tu].number=ctemp[ccol];
			}
	}
}

void SubSMatrix(RLSMatrix a,RLSMatrix b,RLSMatrix &c)
{
	//求兩個用三元組順序表表示的二維矩陣a與b的差,并用新的矩陣c返回

	int i,j,s;
	int t,tp,arow,ccol;
	int ctemp[21];

	if((a.mu!=b.mu) || (b.nu!=a.nu))
	{
		printf("sub error\n");
		exit(0);
	}
	c.mu=a.mu;c.nu=a.nu;c.tu=0;
	if(a.tu+b.tu==0)
		return;
	
	for(arow=1;arow<=a.mu;arow++)
	{
		for(i=1;i<=a.nu;i++)
			ctemp[i]=0;

		c.rpos[arow]=c.tu+1;
		if(arow<a.mu)
		{
			tp=a.rpos[arow+1];
			t =b.rpos[arow+1];
		}
		else
		{
			tp=a.tu+1;
			t =b.tu+1;
		}
		j=a.rpos[arow],s=b.rpos[arow];
		while(j<tp && s<t)
		{
			if(a.data[j].col<b.data[s].col)
			{
				ccol       =a.data[j].col;
				ctemp[ccol]=a.data[j].number;
				j++;
			}
			else if(a.data[j].col>b.data[s].col)
			{
				ccol       =b.data[s].col;
				ctemp[ccol]=0-b.data[s].number;
				s++;
			}
			else
			{
				ccol       =a.data[j].col;
				ctemp[ccol]=a.data[j].number-b.data[s].number;
				j++;s++;
			}
			
		}
		while(j<tp)
		{
			ccol       =a.data[j].col;
			ctemp[ccol]=a.data[j].number;
			j++;
		}
		while(s<t)
		{
			ccol       =b.data[s].col;
			ctemp[ccol]=0-b.data[s].number;
			s++;
		}

		for(ccol=1;ccol<=c.nu;ccol++)
			if(ctemp[ccol])
			{
				if(++c.tu>MAXSIZE)
				{
					printf("sub bounds error\n");
					exit(0);
				}
				c.data[c.tu].row   =arow;
				c.data[c.tu].col   =ccol;
				c.data[c.tu].number=ctemp[ccol];
			}
	}
}

void MulSMatrix(RLSMatrix a,RLSMatrix b,RLSMatrix &c)
{
	//求兩個用三元組順序表表示的二維矩陣a與b的乘積,并用新的矩陣c返回

	int i,j,t,tp;
	int ccol,arow,brow;
	int ctemp[21];

	if(a.nu!=b.mu)
	{
		printf("mul error\n");
		exit(0);
	}
	c.mu=a.mu;c.nu=b.nu;c.tu=0;
	if(a.tu*b.tu==0)
		return;
	for(arow=1;arow<=a.mu;arow++)
	{
		for(i=1;i<=b.nu;i++)
			ctemp[i]=0;
		c.rpos[arow]=c.tu+1;
		if(arow<a.mu)
			tp=a.rpos[arow+1];
		else 
			tp=a.tu+1;
		for(i=a.rpos[arow];i<tp;i++)
		{
			brow=a.data[i].col;
			if(brow<b.mu)
				t=b.rpos[brow+1];
			else
				t=b.tu+1;
			for(j=b.rpos[brow];j<t;j++)
			{
				ccol=b.data[j].col;
				ctemp[ccol]+=a.data[i].number*b.data[j].number;

			}

		}
		for(ccol=1;ccol<=c.nu;ccol++)
			if(ctemp[ccol])
			{
				if(++c.tu>MAXSIZE)
				{
					printf("bounds error\n");
					exit(0);
				}
				c.data[c.tu].row   =arow;
				c.data[c.tu].col   =ccol;
				c.data[c.tu].number=ctemp[ccol];
			}
	}
}

void TransposeSMatrix(RLSMatrix a,RLSMatrix &t)
{
	//求矩陣a的轉置矩陣,并用新的矩陣t返回

	int i,j,acol;
	int num[21],cpot[21];

	t.mu=a.nu; t.nu=a.mu; t.tu=a.tu;
	if((a.mu==0) || (a.nu==0))
		return;
	if(t.tu==0)
		return;
	for(acol=1;acol<=a.nu;acol++)
		num[acol]=0;
	for(i=1;i<=a.tu;i++)
		++num[a.data[i].col];
	cpot[1]=1;
	for(acol=2;acol<=a.nu;acol++)
		cpot[acol]=cpot[acol-1]+num[acol-1];
	for(i=1;i<=a.tu;i++)
	{
		acol=a.data[i].col;
		j   =cpot[acol];

		t.data[j].row   =a.data[i].col;
		t.data[j].col   =a.data[i].row;
		t.data[j].number=a.data[i].number;
		cpot[acol]++;
	}

}

RLSMatrix RemainderSMatrix(RLSMatrix a,int delrow,int delcol)
{
	//求除去第delrow行和第delcol列的所有元素后的剩余矩陣,用矩陣b返回

	int i,tp,arow;
	RLSMatrix b;

	if(a.mu!=a.nu)
	{
		printf("輸入矩陣應為n階方陣\n");
		exit(0);
	}
	if((delrow>a.mu) || (delcol>a.nu))          //當要刪除的行數或列數不合法時的處理
	{
		printf("remainder error\n");
		exit(0);
	}
	if(a.mu==0)
	{
		printf("矩陣為空\n");
		exit(0);
	}
	b.mu=a.mu-1;b.nu=a.nu-1;b.tu=0;
	//先處理一行,根據該行中元素的列數和要刪除列數比較來進行不同的處理
	for(arow=1;arow<=a.mu;arow++)
	{
		if(arow<a.mu)                   
			tp=a.rpos[arow+1];
		else
			tp=a.tu+1;
		if(arow==delrow)continue;       //列數與目標列數相等則不做處理
		if(arow<delrow)
		{
			b.rpos[arow]=b.tu+1;          //列數比目標列數更小,則直接復制,否則行數或列數需減一
		}
		else
		{
			b.rpos[arow-1]=b.tu+1;
		}
		for(i=a.rpos[arow];i<tp;i++)
		{
			if(a.data[i].col==delcol)continue;
			if(arow<delrow)
			{
				b.data[b.tu+1].row   =arow;
			}
			else
			{
				b.data[b.tu+1].row   =arow-1;
			}
			if(a.data[i].col<delcol)
			{
					
				b.data[b.tu+1].col=a.data[i].col;
					
			}
			else
			{
				b.data[b.tu+1].col=a.data[i].col-1;

			}
			b.data[b.tu+1].number=a.data[i].number;
			b.tu++;
		}
	}
	return b;
}

int ValueSMatrix(RLSMatrix a)
{
	//求矩陣a的行列式的值,并用value返回
	int value,i,arow,tp,m;
	
	value=0;
	arow=1;
	if(a.mu!=a.nu)
	{
		printf("請輸入方陣\n");
		exit(0);
	}
	if(a.tu==0)
		return 0;
	if(a.mu==1)
		return a.data[1].number;
	if(arow<a.mu)
		tp=a.rpos[arow+1];
	else 
		tp=a.tu+1;
	//直接按第一行展開來算行列式
	for(i=a.rpos[arow];i<tp;i++)
	{
		
		m=(a.data[i].row+a.data[i].col)%2;

		if(m==1)         //該元素的行數和列數之和為奇數
		{
			value+=a.data[i].number*(-1)*ValueSMatrix(RemainderSMatrix(a,arow,a.data[i].col));

		}
		else             //該元素的行數和列數之和為偶數
			value+=a.data[i].number*ValueSMatrix(RemainderSMatrix(a,arow,a.data[i].col));
	}
	return value;
}

void GoWithSMatrix(RLSMatrix a,RLSMatrix &b)
{
	//求矩陣a的伴隨矩陣,并用矩陣b返回

	int ctemp[21][21];
	int arow,acol,m;

	for(arow=1;arow<=a.mu;arow++)
	{
		for(acol=1;acol<=a.nu;acol++)
		{
			m=(arow+acol)%2;
			if(m==0)           //該元素的行數和列數之和為偶數
			{
				ctemp[acol][arow]=ValueSMatrix(RemainderSMatrix(a,arow,acol));
			}
			else                 //該元素的行數和列數之和為奇數
				ctemp[acol][arow]=(-1)*ValueSMatrix(RemainderSMatrix(a,arow,acol));
		}
	}
	b.mu=a.mu;b.nu=a.nu;b.tu=0;
	//將ctemp中保存的伴隨矩陣中的元素壓入稀疏矩陣進行存儲
	for(arow=1;arow<=a.mu;arow++)
	{
		b.rpos[arow]=b.tu+1;
		for(acol=1;acol<=a.nu;acol++)
			if(ctemp[arow][acol])
			{
				if(++b.tu>MAXSIZE)
				{
					printf("create bounds error\n");
					exit(0);
				}
				b.data[b.tu].row   =arow;
				b.data[b.tu].col   =acol;
				b.data[b.tu].number=ctemp[arow][acol];
			}
	}
}

void AthwartSMatrix(RLSMatrix a,RLSMatrix &b)
{
	//求矩陣a的逆矩陣,并用新的矩陣b返回

	int value,i;

	value=ValueSMatrix(a);
	if(value==0)
	{
		printf("該矩陣無逆矩陣\n");
		exit(0);
	}
	GoWithSMatrix(a,b);         //用b返回a的伴隨矩陣         
	for(i=1;i<=b.tu;i++)
	{
		b.data[i].number=b.data[i].number/value;          //將伴隨矩陣的每個元素再除以行列式的值即可
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线视视频有精品| 91蜜桃网址入口| 日韩三级伦理片妻子的秘密按摩| 亚洲人成网站精品片在线观看| 成人高清在线视频| 国产日韩精品一区二区浪潮av| 国产成人av电影在线播放| 久久久久久久综合| eeuss影院一区二区三区| 国产精品视频在线看| a级精品国产片在线观看| 久久精品国产久精国产爱| 99久久国产免费看| 亚洲综合男人的天堂| 欧美午夜精品久久久| 免费在线看成人av| 久久男人中文字幕资源站| 国产成人av电影在线观看| 欧美国产精品v| 国产99一区视频免费| 亚洲午夜久久久久久久久电影网 | 色综合网色综合| 无码av免费一区二区三区试看 | 欧美国产综合色视频| 国产成人精品三级麻豆| 一区二区三区成人在线视频| 欧美精品视频www在线观看| 国产精品一区二区免费不卡| 国产精品无码永久免费888| 91一区二区在线| 另类小说综合欧美亚洲| 国产欧美精品一区aⅴ影院| 欧美午夜精品久久久久久孕妇 | 国产一区视频导航| 中文字幕一区二区三区蜜月| 色欧美日韩亚洲| 蜜臀精品一区二区三区在线观看| 久久综合久久综合亚洲| 欧美三级资源在线| 精品无人码麻豆乱码1区2区 | 亚洲一区二三区| 国产日韩影视精品| 欧美午夜精品理论片a级按摩| 丝袜诱惑制服诱惑色一区在线观看| 国产蜜臀97一区二区三区| 日本韩国一区二区| 国产成人亚洲综合a∨猫咪| 一个色综合网站| 中文字幕精品在线不卡| 4438x成人网最大色成网站| 国产传媒一区在线| 亚洲成年人网站在线观看| 精品裸体舞一区二区三区| 91色.com| 91丝袜美女网| 国产专区综合网| 美腿丝袜在线亚洲一区| 一区二区高清免费观看影视大全| 国产精品久久久久天堂| 欧美一级黄色录像| 欧美精品乱人伦久久久久久| 不卡视频在线观看| 国产剧情av麻豆香蕉精品| 日韩 欧美一区二区三区| 国产精品免费视频观看| 蜜臀av亚洲一区中文字幕| 综合久久给合久久狠狠狠97色| 久久久久国产免费免费| 这里只有精品免费| 日韩一级二级三级精品视频| 91久久奴性调教| 91福利精品视频| 不卡视频在线观看| 蜜桃一区二区三区四区| 蜜桃视频在线一区| 五月婷婷激情综合| 日本少妇一区二区| 亚洲18色成人| 日韩福利电影在线| 亚洲一区免费视频| 天堂av在线一区| 午夜久久福利影院| 青青草97国产精品免费观看| 亚洲影院在线观看| 国产精品日产欧美久久久久| 欧美激情一区二区三区全黄 | 精品久久国产老人久久综合| 欧美综合天天夜夜久久| 99久久精品费精品国产一区二区| 色哟哟国产精品| www.av亚洲| 欧美午夜一区二区三区| 欧美无砖砖区免费| 精品国产麻豆免费人成网站| 欧美一卡2卡三卡4卡5免费| 精品国产123| 国产日韩三级在线| 日韩理论片在线| 洋洋成人永久网站入口| 日本成人在线看| 蜜桃精品视频在线| 国产91精品一区二区麻豆网站| 国产成人综合精品三级| 成人h版在线观看| 欧美三级午夜理伦三级中视频| 欧美视频精品在线观看| 亚洲精品一区二区精华| 国产欧美日韩精品a在线观看| 亚洲欧洲精品天堂一级| 夜夜嗨av一区二区三区中文字幕| 奇米色一区二区三区四区| 国产一区二区三区在线观看免费视频 | 丁香五精品蜜臀久久久久99网站 | 色综合天天综合网国产成人综合天 | 欧美性大战久久| 欧美无人高清视频在线观看| 91精品免费在线| 国产精品视频看| 亚洲已满18点击进入久久| 欧美日韩你懂得| 久久伊99综合婷婷久久伊| 亚洲精品ww久久久久久p站| 日韩中文字幕av电影| eeuss鲁片一区二区三区在线观看| 色综合视频在线观看| 精品国产成人在线影院 | 日本女优在线视频一区二区| 国产一区二区影院| 在线成人小视频| 国产调教视频一区| 麻豆精品国产传媒mv男同| 成人高清视频在线| 精品国产髙清在线看国产毛片| 1区2区3区国产精品| 国产一区视频在线看| 91激情在线视频| 亚洲国产高清在线观看视频| 性久久久久久久久久久久| 不卡一卡二卡三乱码免费网站| 欧美精三区欧美精三区| 亚洲免费观看高清完整版在线观看| 日本美女一区二区| 欧美性猛片aaaaaaa做受| 亚洲精品一区二区三区香蕉| 亚洲主播在线播放| 国产裸体歌舞团一区二区| 欧美色图天堂网| 欧美国产欧美综合| 六月丁香婷婷色狠狠久久| 欧美性感一区二区三区| 欧美激情在线看| 久久丁香综合五月国产三级网站| 欧美日韩视频在线观看一区二区三区| 中文无字幕一区二区三区| 国产精品综合av一区二区国产馆| 欧美日韩在线播放三区四区| 伊人开心综合网| 成人激情开心网| 国产精品天美传媒| 久久66热偷产精品| 久久天天做天天爱综合色| 午夜伊人狠狠久久| 制服丝袜av成人在线看| 一区二区欧美在线观看| 在线观看视频一区| 国产精品久久久久久久久晋中| 丁香婷婷深情五月亚洲| 欧美va在线播放| 国产精品资源站在线| 欧美成人性福生活免费看| 激情综合色综合久久| 欧美一区二区三区视频在线| 免费观看30秒视频久久| 欧美色图一区二区三区| 日韩电影在线免费| 欧美裸体bbwbbwbbw| 美女视频黄a大片欧美| 8v天堂国产在线一区二区| 久久99国产精品久久99果冻传媒| 91精品国模一区二区三区| 麻豆极品一区二区三区| 精品欧美乱码久久久久久1区2区| 韩国av一区二区三区| 久久午夜老司机| 93久久精品日日躁夜夜躁欧美| 亚洲欧洲99久久| 欧美精品一级二级| 蜜臀精品久久久久久蜜臀| 久久精品男人的天堂| 成人亚洲精品久久久久软件| 亚洲视频一二三区| 欧洲av在线精品| 精品亚洲国内自在自线福利| 精品国产欧美一区二区| av不卡在线观看| 亚洲视频综合在线| 日韩三级视频在线看| 国产精品一级在线| 亚洲婷婷国产精品电影人久久| 欧美日韩国产首页|