-
下面是乙個動態建立 2D 陣列然後查詢它的版本:
#include
#include
int main()
int n,m;
std::cout<<"請輸入矩陣的行 (n) 列 (m)";
std::cin>>n>>m;
int * arr=new int[n*m];
for(int i=0;i!=n;++i)for(int j=0;j!=m;++j)std::cout<<"["<>arr[i*m+j];
std::vector* arr_vec=new std::vector[m];
for(int i=0;i!=n;++i)int p=i*m+0;
for(int j=0;j!=m;++j)if(arr[i*m+j]>arr[p])p=i*m+j;
p-=i*m;
arr_vec[p].push_back(i);
for(int i=0;i!=m;++i)int p=i;
for(int j=i;j<=(n-1)*m+i;j+=m)if(arr[j]p=j;p-=i;
p%=m;for(int j=0;j != (arr_vec[i]).size();j)
if(arr_vec[i][j]==p)
std::cout<<"found! its ["<:system("pause");
-
#include
void main()
int a[2][3];
int i=0,j=0,k=0;
int max=0,min=0;
int x=0,y=0;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
在每行中找出最大的。
for(i=0;i<2;i++)
max=a[i][0];
for(j=1;j<3;j++)
if(a[i][j]>max)
max=a[i][j];
x=j;} 找到它,看看這一列是否最小。
min=a[0][x];
for(k=0;k<2;k++)
if(a[k][x]min=a[k][x];
y=k;if(max==min)
printf("d行中有乙個鞍點",i);
printf("鞍點行號:%d,列號:%d",y,x);}else printf("d線上沒有鞍點",i);
其實,如果你讀過《C Expert Programming》,就很簡單,這個問題在上面已經詳細描述過了。 它儲存在記憶體中,如圖所示。 n[0][5] 實際上是 *(*n+0)+5),這是第六個單元格。 >>>More
常規的解是電流分析法,假設大小為i的電流分別在日本對角線的兩點連線和發出,那麼無窮遠處的電勢可以設定為0的電勢,並且通過對稱性假設接入點和出口點的電位為+u和-u, 並且電流可以認為是從接入點流向無窮大,然後又從無窮大流回接觸點。在前面的過程中,電流對稱流動,因此從流入點到儲備點的z形路徑的第一段電流為i 4,第二段的電流為i 12(即i 4分為3部分),第三段仍在i 12以上(仔細分析圖表明,該節點是兩流進兩齣); 在後乙個過程中執行類似的分析(除了電流方向相反)。 這樣,三條路徑上的疊加電流分別為i 3(即i 4 + i 12)、i 6、i 3,電位降到ir 3 + ir 6 + ir 3 = 5ir 6,這應該等於2u的總壓降(即2u=5ir 6),所以等效電阻r'=2u/i=5r/6 >>>More