1. 程式人生 > 其它 >第四章例題整理

第四章例題整理

技術標籤:數學作業c++

//30個學生的平均成績及其標準差
#include
#include
using namespace std;
int main()
{
srand(0);
constexpr int sz = 30;
int score[sz];
int mean = 0; //
for (auto& i : score) //
{
i = 50 + rand() % 51; //
mean += i; //

}
mean /= sz;
double dev = 0;
for (int i = 0; i < sz; ++i)
{
	dev += pow(score[i] - mean, 2);          // pow(x, y)是求x的y次方
}
dev = sqrt(dev / sz);
cout << mean << endl << dev;


return 0;

}

//八皇后問題 涉及回溯法的應用
#include
using namespace std;
int main()
{
constexpr int sz = 8;
int que[sz] = { 0 }; //每行皇后從第0列開始擺放
int i = 0;
while (i >= 0)
{
int k = 0; /// 即第k行皇后
while (k < i)
{
if (que[k] != que[i] && abs(que[k] - que[i]) != abs(k - i)) // 判斷第k行與第i行皇后有無衝突
++k;
else /// 不成立, 所以需要跳出語句進行回溯
break;

}
if (k < i) //因上一語句的break成立,即發現衝突,則開始回溯
{
++que[i]; // 第i行皇后往後移一列
while (que[i] ==sz)//因只有八列,若此時超出第八列,則需要第i行皇后回到第0列,第i-1行皇后開始回溯
{
que[i] = 0;
–i;
if (i < 0)
break;//此時為回溯到第0行之前,則需要跳出運算,重新運算
++que[i];//若未跳出o0行之前,則因此時的i為i-1行,讓第i-1行往後移一列
}
continue;//此時為重複最前面的while語句,從而再次檢測是否有發生衝突,返回到第9行
}
else //因k》=i 則跳轉到else語句來給行數新增1
{
++i;
if (i <sz)//如果i還沒有超出第八行
continue;//則再次進行最大的while語且因此時的i值的改變
cout << “找到一個方案” << endl;
for (k = 0; k < sz; ++k)/此時找到一個方案來輸出,且所有的皇后的列位置在前面語句中已經全部設計好
cout << que[k];
cout << endl;
break;
}

}



return 0;

}

//做一個地雷方陣

#include
#include
#include

using namespace std;
int main()
{
constexpr int sz = 8;
srand(time(0));
char map[sz][sz]; //
for (auto& row : map)
{
for (auto &col : row)
{

		int num = rand() % 100;
		if (num <= 40)
			col = '*';
		else
			col = '0';
	}
}
for (int i = 0; i < sz; ++i) 
{
	for (int j = 0; j < sz; ++j)
	{
		if (map[i][j] !='*')//為了找出每個地雷
			continue;
		if (i + 1 < sz && map[i + 1][j] != '*')給地雷旁邊的0加1
			map[i + 1][j] += 1;
		if (i - 1 >= 0 && map[i - 1][j] != '*')
			map[i -1][j] += 1;
		if (j + 1 < sz && map[i][j+1] != '*')
			map[i][j+1] += 1;
		if (j-1 >= 0 && map[i][j-1] != '*')
			map[i][j-1] += 1;

	}
	
}
for (int i = 0; i < sz; ++i)
{
	for (int j = 0; j < sz; ++j)
	{
		cout << map[i][j] << "   ";
	}
	cout << endl; ///輸出完一個一維矩陣後換行輸出另一個一維矩陣
}




return 0;

}