作業(yè)代碼

作業(yè)代碼

//3.3  path 路徑
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std;
struct node
{
    int v, a, b, c[2000];
}p[50][50];
int mmin(int a,int b)
{
    if (a > b) return b;
    else return a;
}
int fac(int x)
{  return x*x;  }
int main()
{
    int T, o = 0;
    cin >> T;
    while (T--)
    {
        int n, m;
        cin >> n >> m;
        memset(p, 0, sizeof(p));
        for (int i0 = 1;i0 <= n;i0++)
            for (int j = 1;j <= m;j++)
                cin >> p[i0][j].v;
        p[1][1].a = fac(p[1][1].v);
        p[1][1].b = p[1][1].v; 
        p[1][1].c[p[1][1].v] = fac(p[1][1].v); 
        for (int j = 2;j <= m;j++)
        {
            p[1][j].a = p[1][j - 1].a + fac(p[1][j].v);
            p[1][j].b = p[1][j - 1].b + p[1][j].v;
            p[1][j].c[p[1][j].b] = p[1][j].a;
        }
        for (int i1 = 2;i1 <= n;i1++)
        {
            p[i1][1].a = p[i1 - 1][1].a + fac(p[i1][1].v);
            p[i1][1].b = p[i1 - 1][1].b + p[i1][1].v;
            p[i1][1].c[p[i1][1].b] = p[i1][1].a;
        }
        for (int i = 2;i <= n;i++)
            for (int j = 2;j <= m;j++)
                for (int k = 0;k < 2000;k++) 
                {
                    if (p[i][j - 1].c[k])
                    {
                        int f = k + p[i][j].v;
                        if (p[i][j].c[f])                       
                            p[i][j].c[f] = mmin(  p[i][j].c[f], p[i][j - 1].c[k] + fac(p[i][j].v)  );
                        else
                            p[i][j].c[f] = p[i][j - 1].c[k] + fac(p[i][j].v);
                    }
                    if (p[i - 1][j].c[k])
                    {
                        int f = k + p[i][j].v;
                        if (p[i][j].c[f])
                            p[i][j].c[f] = mmin(p[i][j].c[f], p[i - 1][j].c[k] + fac(p[i][j].v));
                        else
                            p[i][j].c[f] = p[i - 1][j].c[k] + fac(p[i][j].v);
                    }
                }
        int ans = 1000000000;
        for (int i2 = 0;i2 < 2000;i2++)
            if (p[n][m].c[i2])
                ans = mmin(ans, (n + m - 1)*p[n][m].c[i2] - fac(i2));
        printf("Case #%d: %d\n", ++o, ans);
    }
    return 0;
}

//4.4 szjl 數(shù)字接力
#include<cstdio>   
#include<cstring>   
#include<iostream>   
using namespace std;   
char a[1005][32];   
char p[1005][32];     
int n = 0;   
//自己寫一個字符串比較函數(shù)   
int strcmp_vv(char s[], char t[])   
{   
    char r[200];   
    char r1[200];   
    strcpy(r, s);   
    strcat(r, t);   
    strcpy(r1, t);   
    strcat(r1, s);   
    int i = strcmp(r, r1);   
    return i;   
}   
  
void outv()   
{     
    for (int i = 0;i < n;i++)     
        printf("%s",a[i]);             
    printf("\n");   
}   
  
//將有二個有序數(shù)列a[first...mid]和a[mid...last]合并台谢。     
void mergearray(char a[][32], int first, int mid, int last,char temp[][32])   
{     
    int i = first, j = mid + 1;   
    int m = mid, n = last;   
    int k = 0;   
    while (i <= m && j <= n)   
    { 
        if (strcmp_vv(a[i], a[j])==1)     
            strcpy(temp[k++], a[i++]);     
        else     
            strcpy(temp[k++], a[j++]);   
    }   
    while (i <= m)   
        strcpy(temp[k++] , a[i++]);   
    while (j <= n)   
        strcpy(temp[k++] , a[j++]);   
    for (i = 0; i < k; i++)   
        strcpy(a[first + i] , temp[i]); 
    cout<<" first "<<first<<" mid "<<mid<<" last "<<last<<endl;
    outv();     
    cout<<endl;
}   
void mergesort(char a[][32], int first, int last,char temp[][32])   
{   
    if (first < last)   
    {    
        int mid = (first + last) / 2;   
        mergesort(a, first, mid,temp);    
        mergesort(a, mid + 1, last,temp);    
        mergearray(a, first, mid, last,temp);     
    }    
}   
bool MergeSort(char a[][32], int n)   
{   
    if (p == NULL) return false;   
    mergesort(a, 0, n - 1,p);   
    return true;   
}   
int main()   
{   
    cin >> n;   
    for (int i = 0;i < n;i++)    cin >> a[i];    
    MergeSort(a,n);   
    outv();   
    return 0;   
} 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末最铁,一起剝皮案震驚了整個濱河市狮崩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堂湖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丑孩,死亡現(xiàn)場離奇詭異抖誉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钦奋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疙赠,“玉大人付材,你說我怎么就攤上這事∑匝簦” “怎么了厌衔?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捍岳。 經(jīng)常有香客問我富寿,道長睬隶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任页徐,我火速辦了婚禮苏潜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘变勇。我一直安慰自己恤左,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布搀绣。 她就那樣靜靜地躺著飞袋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪链患。 梳的紋絲不亂的頭發(fā)上巧鸭,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音麻捻,去河邊找鬼纲仍。 笑死,一個胖子當(dāng)著我的面吹牛芯肤,可吹牛的內(nèi)容都是我干的巷折。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼崖咨,長吁一口氣:“原來是場噩夢啊……” “哼锻拘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起击蹲,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤署拟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歌豺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體推穷,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年类咧,在試婚紗的時候發(fā)現(xiàn)自己被綠了馒铃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡痕惋,死狀恐怖区宇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情值戳,我是刑警寧澤议谷,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站堕虹,受9級特大地震影響卧晓,放射性物質(zhì)發(fā)生泄漏芬首。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一逼裆、第九天 我趴在偏房一處隱蔽的房頂上張望郁稍。 院中可真熱鬧,春花似錦波附、人聲如沸艺晴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封寞。三九已至,卻和暖如春仅财,著一層夾襖步出監(jiān)牢的瞬間狈究,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工盏求, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留抖锥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓碎罚,卻偏偏與公主長得像磅废,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子荆烈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容