钱:星期一、星期六
赵:星期二、星期四
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果:
Solution: 1 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 2 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期一 星期日 星期五 星期六 星期二 星期三
Solution: 3 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 4 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期六 星期日 星期五 星期一 星期二 星期三
#include <stdio.h>
int n = 0
int rest[7][7]
void swap(int *a, int *b)
{
int m
m = *a
*a = *b
*b = m
}
void perm(int list[], int k, int m)
{
int i
int j
if(k >m)
{
for (i=0i<7i++)
{
for (j=0j<7j++)
{
if (rest[i][j] == -1)
return
if (rest[i][j] != list[i])
continue
if (rest[i][j] == list[i])
break
}
}
n++
printf("Solution: %d\n", n)
printf("赵 钱 孙 李 周 吴 陈\n")
printf("=============================================================\n")
for(i = 0i <= mi++)
{
switch (list[i])
{
case 1: printf("星期一 ")
break
case 2: printf("星期二 ")
break
case 3: printf("星期三 ")
break
case 4: printf("星期四 ")
break
case 5: printf("星期五 ")
break
case 6: printf("星期六 ")
break
case 7: printf("星期日 ")
break
default:
break
}
}
printf("\n\n\n")
}
else
{
for(i = ki <= mi++)
{
swap(&list[k], &list[i])
perm(list, k + 1, m)
swap(&list[k], &list[i])
}
}
}
int main()
{
int list[] = {1, 2, 3, 4, 5, 6, 7}
int i, j
for(i = 0i <7i++)
{
printf("Enter the day of %d people rests:\n", i+1)
for(j = 0j <7j++)
{
scanf("%d", &rest[i][j])
if(rest[i][j] == -1)
break
}
}
printf("\n\n\n")
perm(list, 0, 6)
printf("total:%d\n", n)
getchar()
getchar()
return 0
}
学校实验楼有7名保安人员:。钱,赵,孙,李,周,吴,陈由于工作需要进行轮休制度,一星期中每人休息一天预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一,星期六
赵:星期二,星期四
孙:星期三,星期日
李:星期五
周:星期一,星期四,星期六
吴:星期二,星期五
陈:星期三,星期六,星期日
运行结果:
解决方案:1赵钱孙李周吴陈================================== =====================
星期四星期一星期三星期五星期六星期二星期日
解决方案:2赵钱孙李周吴陈================================== =====================
星期四星期一星期二星期五
解决方案:3赵钱孙李周吴陈================================== =====================
星期四星期六星期三星期五星期一星期二星期日
解决方案:4赵钱孙李周吴陈================================== =====================
星期四星期六星期二星期五星期一星期二星期三
#include <stdio.h>
int n = 0
休息[7] [7]
void swap(int * a,int * b)
{
int m
m = * a
* a = * b
* b = m
}
void perm(int list [],int k,int m)
{
int i
int j
如果(k>m)
{
for(i = 0i <7i ++)
{
for(j = 0j <7j ++)
{
if(rest [i] [j] == -1)
返回
if(rest [i] [j]!= list [i])
继续
if(rest [i] [j] == list [i])
打破
}
}
的n ++
printf(“解决方案:%d \ n”,n)
printf(“赵钱孙李周吴陈\ n”)
的printf(“=============================================== ============== \ n“)
for(i = 0i <= mi ++)
{
switch(list [i])
{
案例1:printf(“星期一”)
打破
情况2:printf(“星期二”)
打破
案例3:printf(“星期三”)
打破
情况4:printf(“星期四”)
打破
情况5:printf(“星期五”)
打破
情况6:printf(“星期六”)
打破
案例7:printf(“星期日”)
打破
默认:
打破
}
}
的printf( “\ n \ n \ n”)
}
其他
{
for(i = ki <= mi ++)
{
交换(&list [k],&list [i])
perm(list,k + 1,m)
交换(&list [k],&list [i])
}
}
}
int main()
{
int list [] = {1,2,3,4,5,6,7}
int i,j
for(i = 0i <7i ++)
{
printf(“输入%d人的日子休息:\ n”,i + 1)
for(j = 0j <7j ++)
{
scanf(“%d”,&rest [i] [j])
if(rest [i] [j] == -1)
打破
}
}
的printf( “\ n \ n \ n”)
perm(list,0,6)
printf(“total:%d \ n”,n)
的getchar()
的getchar()
返回0
}
#include <stdio.h>#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std
void StringSplit(string str, string delim, vector<string>results)
{
int cutAt
while( (cutAt = str.find_first_of(delim)) != str.npos )
{
if(cutAt >0)
{
results.push_back(str.substr(0,cutAt))
}
str = str.substr(cutAt+1)
}
if(str.length() >0)
{
results.push_back(str)
}
}
class ReadFile {
public:
static vector<vector<int>>read(const char* filename) {
int x = 0
int y = 0
vector<string>m
ifstream f(filename)
string str
vector<string>s
char* buffer = new char[1024]
while(f.getline(buffer,1024)) {
StringSplit(trim(str),",",s)
y = s.size()
for(int i(0)i<yi++) {
m.insert(m.end(), s.begin(),s.end())
}
}
delete[] buffer
vector<vector<int>>arr
for(int i=0i <xi++) {
for(int j=0j <yj++) {
string str = m.at(j*y + i)
char* strc
strc = &str[0]
//String[] strs = (String[])m.get(i+1)
//arr[i][j] = Integer.parseInt(strs[j])
arr[i][j] = atoi(strc)
}
}
return arr
}
static string trim(string str) {
size_t startpos = str.find_first_not_of("\t")
size_t endpos = str.find_last_not_of("\t")
# // if all spaces or empty return an empty string
if(( string::npos == startpos ) || ( string::npos == endpos))
{
str = ""
}
else
str = str.substr( startpos, endpos-startpos+1 )
return str
}
}
int main() {
time_t previousTime
time(&previousTime)
time_t lastTime = 0
//设置1个参数,如果等于1,则计算并把结果写入文件,且计算时间,如果等于2,计算并计算时间,不写文件,但计算结果,在 屏幕输出 如果等于3,only计算,不在屏幕输出结果,只显示计算时间~
int choose = 0
cin >>choose
//将结果输出到文件中
ofstream f
f.open("f://1.txt")
int Cut = 0
vector<vector<int>> b = ReadFile::read("F://3.txt")
vector<vector<int>> c = ReadFile::read("F://4.txt")
vector<vector<int>>a
string sb
for(unsigned int i=0i <b.size()i++) {
for(unsigned int j=0j <b[i].size()j++) {
a[i][j] = b[i][j] * c[i][j]
Cut += 1
char* sbc
sbc = &sb[0]
sprintf_s(sbc,10,"%d ",a[i][j])
}
sb.append("\r\n")
}
time(&lastTime )
// in seconds
double useTime = difftime(lastTime, previousTime)
useTime *= 1000
if(choose == 1) {
f <<sb
cout<<"运行结果输出到F://1.txt文件中"<<endl
}
if(choose == 2) {
cout<<"-共进行计算" <<Cut <<"次!"<<endl
cout<<sb<<endl
}
if(choose == 3) {
cout<<"一共运行" <<useTime <<"毫秒"<<endl
}
return 0
} // Main
INTEGER A(3,2) 声明A是 3列2行 的整型数组。READ(*,*) 。。。 从键盘以自由格式 输入数据。
WRITE(*,100) 。。。 第一个参数是文件号/设备号,用 * 表示是 屏幕,第二个参数是格式语句标号,你这里 是指 100 FORMAT(1X,2I4)
WRITE(*,*) 是向屏幕,按 自由格式(或叫默认格式)输出。
A(10) 是 一维数组。是一字长蛇阵。含10个元素,下标 1 到 10
A(3,2) 是 2维数组。是矩阵。 含 6个元素,3列2行。
-----------
WRITE(*,100)((。。。
打印出:
1 4
2 5
3 6
WRITE(*,200)((
打印出:
1 2 3
4 5 6
------------
。。。((A(I,J),J=1,2),I=1,3) -- 这叫“隐做表”,实际上是双重循环语句。
。。。((A(I,J),I=1,3),J=1,2) -- 这叫“隐做表”,实际上是另一个双重循环语句。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)